问题描述
我不断看到这种模式,并想知道它是什么,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
属性与其他对象相关联。想知道它有什么作用以及如何使用它?
编辑
我希望能够获得更多的投入!不幸的是,使用”filter” 的 Google 搜索只会导致 Filter hooks 等。这是一个很难获得独立信息的功能。比埃勒?
最佳解决方案
$ post-> 过滤器包含过滤内容的上下文。上下文可能类似于”display”,表示该帖子是要显示在页面上的。
这是由消毒功能完成的,以便在什么情况下表明邮政数据被消毒。不同的环境得到不同类型的消毒。例如,”raw” 是未经归类的数据。 “display” 可能已经经历了 esc_html 功能,或者与该上下文有关的任何内容。 sanitize_post() 功能用于检查 pre-existing 消毒,以防止双重逃逸等。
$ post-> 过滤器的另一个用途是在 get_sample_permalink() 功能中。你会发现它在调用 get_permalink() 之前设置 $post->filter = 'sample'
。这里使用”sample” 表示 get_permalink 功能,并在下面进行编码,该调用的目的是创建一个示例固定链接,用于在编辑后屏幕上显示。这将改变下面的一些功能的工作方式。
参考文献
注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。