EP009. “什么是 Function”
🔒 登录后可标记已读插入一节 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