通俗地说,过滤器用于修改或更改现有数据,例如帖子的内容或任何其他定义的值。当一个特定的东西运行时,手上的动作会做一些事情。
对于操作和筛选器,必须首先声明它们,即对于筛选器,必须定义可以使用筛选器更改的内容,对于操作挂钩,必须定义将导致操作运行的内容。
Note:在你上面的例子中,没有提到任何filter
, 因此,修改该函数的唯一方法是将其复制到子主题的function.php
手动归档并添加类。
现在,为了了解过滤器的工作原理,让我们看一个示例,
假设您要打印作者的姓名,则可以应用filter
这样,如果您想更改作者的姓名,就可以在不修改原始函数的情况下进行更改。
/*
* - \'change_author_name_filter\' is the filter hook $tag
* - \'Digvijayad\' is the value being filtered
$author_name = apply_filter(\'change_author_name_filter\', \'Digvijayad\');
现在如果您使用
$author_name
然后它将使用
\'Digvijayad\'
作为默认作者名称。但是,如果您添加如下所示的过滤器。
// filter call_back
function change_author_name( $author_name ){
//here you can do whatever you want to author name;
// you can modify it or replace it altogether.
// To print \'Digvijayad & Jack Johansson\' you can do the following.
// $author_name .= \' & Jack Johansson\';
// or you can replace it altogether.
$author_name = \'Jack Johansson\';
return $author_name;
}
add_filter(\'change_author_name_filter\', \'change_author_name\', 10, 1);
现在如果您使用
$author_name
它将被替换为
\'Jack Johansson\'
至于行动,当事情完成时,它们会触发一种反应。让我们以警报为例。首先设置闹钟的时间,当到达时间时,闹钟会播放声音告诉你时间到了。
现在,通过行动,你可以告诉闹钟在到达时间时也做其他事情,比如“给朋友打电话”。现在,让我们将其放入代码中。
假设您已经设置了时间,现在您设置了do_action
时机成熟时,钩子会有所作为。
//code when time is checked
// and now time is up
do_action(\'time_is_up\'); //basically it will perform this action when ever the time is up
现在,您可以向该特定事件添加更多操作。根据类比,现在可以告诉它在运行“time\\u is\\u up”操作时给朋友打电话。
// Now Whenever \'time_is_up\' runs this function will run as well
function call_friend(){
//code for calling a friend;
echo \'calling friend\';
}
add_action(\'time_is_up\', \'call_friend\', 10);
类似地,您可以向同一个
\'time_is_up\'
行动挂钩。例如,也许你也想给你的家人打电话
function call_my_family(){
//code to call my family
echo \'calling family\';
}
add_action(\'time_is_up\', \'call_my_family\', 10);
希望这个简单的解释能消除您对操作和过滤器的混淆。
更多阅读,你可以阅读Tom McFralin\'s 关于操作和筛选器的文章。