内容过滤器-检查帖子(_C)

时间:2021-06-09 作者:StripyTiger

我想使用\\u内容过滤器来检查帖子类别。如果一篇文章选择了某些类别,根据用户的不同,我想返回一条消息,说“对不起,你不能查看”,而不是内容本身。

虽然添加了过滤器,但我发现\\u内容过滤器不会将帖子id或帖子传递到函数中,因此我无法检查帖子是否满足条件。

有没有人能建议一种不更新所有页面模板的方法?

1 个回复
最合适的回答,由SO网友:Jacob Peattie 整理而成

您需要依赖全局post变量,或者get_post(), 这本质上是一样的。

add_filter(
    \'the_content\',
    function( $content ) {
        $post = get_post();

        if ( in_the_loop() && has_category( 123, $post ) ) {
            // etc.
        }

        return $content;
    }
);
我包括一张支票in_the_loop(), 因为the_content 过滤器通常应用于循环之外的上下文中,其中不一定有相关的全局$post 变量

相关推荐

Search with filters

我想在搜索表单中创建三个过滤器,其中包括三个不同的过滤器(标签、类别和帖子)。是否可以创建这些过滤器?如果可能的话,意味着我如何创建它?基本上,我不擅长PHP。所以,请帮我解决这个问题。谢谢