这是WordPress中的简单过滤功能
我已经理解了这段代码的主要过程,但有一件事情并不清楚。
我没有在 $content
函数中传递 add_filter
参数,但它来自哪里?
如果WordPress支持默认参数,那么如何知道特定过滤器或动作事件可能的参数是什么?
<?php
add_filter( 'the_content', 'prowp_profanity_filter' );
function prowp_profanity_filter( $content ) {
$profanities = array( 'sissy', 'dummy' );
$content = str_ireplace( $profanities, '[censored]', $content );
return $content;
}
?>
感谢。
答案 0 :(得分:1)
wp-includes/post-template.php
过滤器钩子位于the_content()
函数内,该代码在 /**
* Display the post content.
*
* @since 0.71
*
* @param string $more_link_text Optional. Content for when there is more text.
* @param bool $strip_teaser Optional. Strip teaser content before the more text. Default is false.
*/
function the_content( $more_link_text = null, $strip_teaser = false) {
$content = get_the_content( $more_link_text, $strip_teaser );
/**
* Filters the post content.
*
* @since 0.71
*
* @param string $content Content of the current post.
*/
$content = apply_filters( 'the_content', $content );
$content = str_replace( ']]>', ']]>', $content );
echo $content;
}
核心文件中定义(开始在第222行:
$content
如果您查看代码,您会理解过滤器挂钩中使用的 {{1}} 参数也被用作该函数中的变量来操纵通过它传递的数据,在输出之前。
每个操作和过滤器挂钩都在核心代码文件或模板中定义了自己的参数,因为它们是一种更改默认行为的方法,而无需更改该核心文件或模板的源代码。
我希望这能回答你的问题。
在互联网上搜索,您可以轻松找到所有现有过滤器挂钩和动作挂钩的列表及其各自的参数。
答案 1 :(得分:0)
LoïcTheAztec是对的,我只是想在函数($content
)中触发过滤器时自动填充the_content
。
apply_filters允许添加其他参数并传递给钩子。您会找到更多详细信息here