禁用某些用户角色的简码使用

Posted

技术标签:

【中文标题】禁用某些用户角色的简码使用【英文标题】:Disable Shortcode usage for certain user roles 【发布时间】:2017-04-20 03:26:32 【问题描述】:

我在我的 Wordpress 网站上有一个访客发帖插件,并且想要禁用某些用户角色(例如订阅者)的短代码使用。出于安全原因,我需要这个。

【问题讨论】:

澄清一下:你想阻止这些用户在他们写的帖子/页面中插入简码吗?或者您想在呈现他们查看的帖子/页面时阻止使用这些短代码? 我不太确定.. 我认为第二个 - 防止提取短代码。所以用户可以编写短代码或类似 [some_text] 的短代码,但它不会被执行。所以短代码就像文本一样。 【参考方案1】:

假设您有短代码,

function myshortcode()

$user = wp_get_current_user();
if ( !in_array( 'author', (array) $user->roles ) ) 
    //Run shortcode




add_shortcode('myshortcode','myshortcode');

【讨论】:

对不起,如果我只是误解了你,但你确定这是我需要的正确代码吗?因为看起来好像不是。 那到底想做什么?? 是的,因为我理解这个检查用户角色,如果它不在角色中然后运行 我想禁用特定用户角色的所有简码。如果用户属于“订阅者”类别,他将无法使用任何简码 - 这是我想要实现的目标。【参考方案2】:

您可以使用strip_shortcodes() 函数,您可以将其用作过滤器以从所需内容中去除短代码:

function example_remove_shortcode( $content ) 
  $content = strip_shortcodes( $content );
  return $content;

add_filter( 'the_content', 'example_remove_shortcode' );

echo strip_shortcodes( $my_customly_created_content );

在您要显示内容的位置。

【讨论】:

如果您将第二行包装在检查当前用户角色的条件中,那么这可能会回答 OP 的问题。 @Dre 没错,但我不太确定他想在哪里使用它。我会编辑答案

以上是关于禁用某些用户角色的简码使用的主要内容,如果未能解决你的问题,请参考以下文章

以编程方式为特定用户角色禁用税收

如何激活keycloak的REST API?

Visual Composer 自定义简码模板 - custom_markup 显示用户输入

如何检查用户是不是具有特定角色并因此允许某些操作?

管理员用户禁用 JBPM 用户和角色

基于角色 Springboot+Thymeleaf 禁用/启用 Html 元素