【问题标题】:Strip shortcodes for all user roles except administrator去除除管理员之外的所有用户角色的简码
【发布时间】:2019-09-07 21:58:17
【问题描述】:

我正在寻找一种解决方案,该解决方案将去除除管理员和我选择的任何角色之外的所有 wordpress 用户角色的简码。类似于以下链接中的解决方案,它从未被确认有效,我不知道哪个有效。

Disable Shortcode usage for certain user roles

谢谢,

【问题讨论】:

    标签: wordpress user-roles wordpress-shortcode


    【解决方案1】:

    你应该结合两个答案:

    function remove_shortcode_for_user_roles( $content ) {
        $user = wp_get_current_user();
        if ( in_array( 'administrator', (array) $user->roles ) == false &&
            in_array( 'other_role', (array) $user->roles ) == false ) {
            $content = strip_shortcodes( $content );
        }
    
        return $content;
    }
    add_filter( 'the_content', 'remove_shortcode_for_user_roles' );
    

    “other_role”是您也想从短代码剥离中排除的其他角色。

    【讨论】:

    • 这确实成功了,但是订阅者不能再从前端发布,因为呈现表单的简码也消失了。如何使用上述代码仅删除特定短代码或特定短代码列表?
    • 在这种情况下,您可以使用 preg_replace 从内容中删除特定的短代码。比如:$content = preg_replace( '/\[video(.*?)\]/s' , '' , $content );
    • 看来我正在寻找错误的解决方案来解决我的问题。我使用了一个名为 frontier post 的前端博客插件,在高级设置下,它有一个选项可以选择您不想使用简码的帖子类型,并且只建议在页面帖子类型上使用简码。它过去可以正常工作,但现在短代码显示在访客博客通过插件发布的帖子中。我真正需要的是能够阻止除管理员之外的所有其他用户角色使用简码。
    • 剥离简码的效果是,当具有订阅者角色的用户查看包含仅设置为仅呈现给管理员的简码的内容时,简码被剥离并且没有内容显示,给予我的问题是无法向我的用户显示任何包含我限制他们在发布时使用的简码的帖子。我希望当他们查看页面或发布带有简码的页面时显示简码,但由于他们的用户角色而无法在他们的帖子中使用任何简码。任何建议都会有很大帮助。
    • 嗨 victor,我认为在帖子类型上禁用短代码的使用更为理想,我的用户将可以访问通过短代码呈现的所有内容,因为所有内容都在页面和不是帖子并且仍然无法使用短代码,因为他们只能访问“帖子”帖子类型。我如何将您的第一个代码与选择仅在帖子上剥离短代码的版本一起使用?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-01
    • 2016-12-17
    • 2020-02-16
    • 1970-01-01
    • 1970-01-01
    • 2021-02-14
    相关资源
    最近更新 更多