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

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

【问题讨论】:

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

标签: wordpress user-roles


【解决方案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 没错,但我不太确定他想在哪里使用它。我会编辑答案
猜你喜欢
  • 2017-01-28
  • 2012-03-13
  • 2018-09-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多