问题描述

我不断看到这种模式,并想知道它是什么,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 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。