有一种微妙的difference between action hooks and filters. 最值得注意的一点是,过滤器函数需要接收一个值,并在完成其工作时传递该值。在函数内部,该值可以修改或用于其他用途。
在你的情况下the_content
是一个过滤器,在调用时,它接受posts内容并将其作为第一个参数发送给第一个挂钩函数。钩子函数现在可以修改此内容,或者例如附加一些内容。但是该函数也期望最终返回内容字符串,因此可以将其传递给钩子上的下一个函数the_content
. 重复此操作,直到完成所有挂钩函数。然后,最终产品将返回到调用过滤器的代码(此过滤器在the_content()
, 但它也可以在其他地方被调用),只有这样,结果字符串才会被回显。这就是为什么总是返回字符串很重要,否则invocating函数不知道输出什么。
在您的情况下,此筛选器的用法如下所示:
add_filter( \'the_content\', \'wpse247535_display_news_slider\' );
function wpse247535_display_news_slider( $content ) {
if ( is_page( \'sample-page\' ) ) {
$content .= "plugin content";
$content .= "more plugin content";
}
return $content;
}
因此,要回答问题的标题:页面的内容不会被覆盖,但函数不会将获取的内容字符串作为参数进行处理,因此不会将其返回给invocating函数,而invocating函数则无法再输出内容,因为它在途中丢失了。