我一直看到这种模式,想知道它的用途是什么,WP是如何在内部使用它的:
if ( empty($post) ) {
if ( isset($GLOBALS[\'post\']) )
$_post = & $GLOBALS[\'post\'];
else
return $null;
} elseif ( is_object($post) && empty($post->filter) ) {
_get_post_ancestors($post);
$_post = sanitize_post($post, \'raw\');
wp_cache_add($post->ID, $_post, \'posts\');
} else {
if ( is_object($post) )
$post_id = $post->ID;
else
$post_id = $post;
具体问题是
is_object($post) && empty($post->filter)
. 我看过这个
filter
属性也与其他对象关联。想知道它做什么以及如何使用它?
编辑
我希望在这方面得到更多的投入!不幸的是,带有“过滤器”的谷歌搜索只能找到过滤器挂钩等。这是一个很难获得独立信息的搜索。布勒?
最合适的回答,由SO网友:Otto 整理而成
$post->过滤器包含过滤帖子内容的上下文。上下文可以是类似“display”的东西,表示文章要显示在页面上。
这是由清理功能完成的,以指示在什么上下文下清理了post数据。不同的环境得到不同类型的净化。例如,“raw”是未初始化的数据。“display”可能已经通过了esc\\U html函数,或者与该上下文相关的任何函数。sanitize\\u post()函数使用此函数检查预先存在的清理,以防止双重转义等。
$post->过滤器的另一个用途是get\\u sample\\u permalink()函数。你会发现它设置了$post->filter = \'sample\'
在调用get\\u permalink()之前。此处使用“sample”向get\\u permalink函数及其下面的代码表明,此调用的目的是创建一个示例permalink,以显示在edit post屏幕上。这将改变它下面的一些功能的工作方式。
SO网友:Roman
@Shaan:我不认为Tom在寻找关于WP插件API的描述。他正在寻找对象属性的描述filter
你得到的结果是WP_Query
. 例如,如果您使用get_posts()
:
stdClass Object
(
// other post properties
[filter] => raw
)
我不知道这个属性在WordPress中是否被使用,在哪里被使用。在查看了源代码之后,我认为目前任何地方都没有使用它。
只是在这里猜测。默认值为raw
到目前为止的所有帖子。可能是核心开发人员希望在每个帖子库上添加一个过滤。例如,如果希望只允许帖子内容中的某些HTML元素,可以创建一个过滤器sanitizeHtml
, 把它贴在帖子上,WordPress会帮你完成剩下的事情。