是否按角色限制内容片段-内容中的保护消息?

时间:2017-05-19 作者:Isak Pontus

我使用以下函数(Nothing here 是保护消息):

function show_user_content($atts,$content = null){
  global $post;
    if (current_user_can(\'subscriber\')){
    return $content;
  }
    return "Nothing here";
}
add_shortcode(\'RESTRICTROLE\',\'show_user_content\');
然后在帖子内容中:

[RESTRICTROLE]some word for subscriber[/RESTRICTROLE]
我需要能够在帖子内容而不是函数中编写保护消息。

我的目标是通过使用单个函数来使用多个保护消息。

3 个回复
最合适的回答,由SO网友:Rarst 整理而成

Shortcode API 支持任意属性,因此您可以轻松地使用以下属性实现它:

[RESTRICTROLE message="Really nothing here"]some word for subscriber[/RESTRICTROLE]

SO网友:Rui Silva

您可以在希望具有保护消息的每个帖子中使用“添加自定义字段”将该自定义消息保存到帖子元中。然后在短代码中,您可以使用get_post_meta 要获取该消息,您还可以使用默认的保护消息,以防帖子没有任何自定义保护消息。

function show_user_content($atts,$content = null){
   global $post;
   if (current_user_can(\'subscriber\')){
        return $content;
   }
   $msg = get_post_meta($post->ID, \'protection_message\', true);
   if ( !empty($msg) ){
      return $msg
   }
      return "default message";
}
add_shortcode(\'RESTRICTROLE\',\'show_user_content\');

SO网友:Christian

为了只使用一个简单的短代码隐藏内容的某些部分,您可以尝试使用“限制匿名访问”插件:

https://wordpress.org/plugins/restrict-anonymous-access/

示例:

[member]Some content I want to hide.[/member]

此短代码可以放置在任何需要对注销用户隐藏内容的位置,甚至可以寻址具有特定用户角色的用户:

[member role="author"]Some content I want to hide from users below author role.[/member]

还可以向用户返回自定义注释:

[member role="contributor" infotext="This text will be shown to users below contributor role."]Some content I want show to subscribers or above.[/member]

结束

相关推荐