我有一个很好奇的问题。
在WordPress中,我们可以添加类似以下代码的筛选器或操作:
add_filter($filter_Name, $function_will_be_hook);
add_action($action_Name, $function_will_be_hook);
我们可以将一些参数传递到
function_will_be_hook(). 但是WordPress如何知道这些参数与它的过滤器/操作相关呢。
示例:
function my_the_content_filter($content) {
$content .= "I added some additon content";
return $content;
}
add_filter( \'the_content\', \'my_the_content_filter\' );
How does WordPress know $content
is the content of Post/Page (even when we change name of this param to some other name)?
SO网友:Ben Miller - Remember Monica
对于您使用的每个过滤器或动作挂钩add_filter
或add_action
功能,有相应的apply_filters
或do_action
在WordPress核心的某个地方调用的函数。此函数用于设置将向筛选器或操作发送哪些参数。
对于filter hook the_content
您给出的示例中,过滤器挂钩用于function the_content
发现于wp-includes\\post-template.php
in WordPress 3.7.1:
function the_content( $more_link_text = null, $strip_teaser = false) {
$content = get_the_content( $more_link_text, $strip_teaser );
$content = apply_filters( \'the_content\', $content );
$content = str_replace( \']]>\', \']]>\', $content );
echo $content;
}
在
apply_filters
函数调用时,第一个参数是挂钩名称,在本例中
\'the_content\'
. 下一个参数,
$content
, 是要筛选的值。这将是筛选函数(名为
$content
在您的
my_the_content_filter
函数,但它可以有任何名称)。(可选)可以在中指定更多参数
apply_filters
函数,这些参数将在附加输入参数中传递给过滤器函数。
对于过滤器挂钩,过滤器函数返回一个过滤值,该值由apply_filters
作用对于动作挂钩,没有使用任何返回值。