WP DEVELOP

EP009. “什么是 Function”

首页 WordPress 开发课程 主题基础与本地域名 · EP009
约 8 分钟· #EP009#主题基础与本地域名
🔒 登录后可标记已读

插入一节 PHP 基础概念课,不是继续做主题功能:解释"function(函数)"是什么。全部代码都直接写在 index.php 里做示范,用完就删——下一讲(EP010)一开头就会把这里写的示范代码整个清掉,所以这些代码不是主题的正式内容,只是用来理解概念

涉及文件

  • wp-content/themes/fictional-university-theme/index.php (临时修改,示范用,讲座结束/下一讲开头会被删除,不影响主题正式代码)

代码实现

先回顾上一次接触 PHP 时学过的东西:

<?php
echo 2 + 2;
?>

第一次定义并调用一个 function(定义本身不会输出任何东西,必须在下面用函数名加括号调用它才会真正执行):

<?php
function my_first_function() {
    echo 2 + 2;
}

my_first_function();
?>

把内容换成字符串,调用两次就会输出两次:

<?php
function my_first_function() {
    echo "<p>Hello, this is my first function</p>";
}

my_first_function();
my_first_function();
?>

删掉上面的示范,换成一个更贴近实际需求的例子:想生成"Hi, my name is John, my favorite color is blue"和"Hi, my name is Jane, my favorite color is green"这两段话,先写一个没有参数的版本:

<?php
function greet() {
    echo "<p>Hi, my name is blank and my favorite color is blank.</p>";
}

greet();
greet();
?>

加入一个参数 $name,让调用时传入的值可以出现在输出里:

<?php
function greet($name) {
    echo "<p>Hi, my name is $name and my favorite color is blank.</p>";
}

greet('John');
greet('Jane');
?>

再加入第二个参数 $color

<?php
function greet($name, $color) {
    echo "<p>Hi, my name is $name and my favorite color is $color.</p>";
}

greet('John', 'blue');
greet('Jane', 'green');
?>

最后回到 WordPress 真正会用到的内建 function,bloginfo(),示范怎么动态输出网站标题和标语:

<h1><?php bloginfo('name'); ?></h1>
<p><?php bloginfo('description'); ?></p>

bloginfo('name')bloginfo('description') 的值分别来自后台 Settings(设置)→ General(常规)里的 Site Title(网站标题)和 Tagline(标语)两个字段,在后台改了之后前端会自动跟着变

Hook / Function 速查

名称类型用途
function 关键字PHP 语法定义一个函数(可重复使用的代码片段,先"定义"再"调用"才会执行)
my_first_function()自定义 function(示范用,本讲结束后未保留)示范"定义 function"跟"调用 function"的差别
greet($name, $color)自定义 function(示范用,本讲结束后未保留)示范参数(parameter)跟实参(argument)怎么把外部数据传进函数体内
bloginfo()WordPress 内建 function输出网站相关信息,传入不同参数(如 'name''description')决定输出网站标题还是标语,对应后台 Settings → General 里的设置

常见坑

  • 只写 function my_first_function() { ... } 这样的函数定义,什么都不会发生(页面空白)——一定要在下面另外写一行 my_first_function(); 去调用它,才会真的执行里面的代码
  • 这一讲写的所有示范代码到下一讲(EP010)开头会被整个删掉,不是要保留在主题里的正式代码

延伸 / 后续讲座会用到

下一讲(EP010)接着讲 array 是什么,之后 array 会跟这一讲学到的 function/循环概念结合,用来跑 WordPress 的 The Loop,显示真正的文章和页面内容。

Sources

Udemy:

  • Become a WordPress Developer: Unlocking Power With Code — Section 3, EP009