问题描述

是否有任何条件标签,只有当用户不是用户时,才允许我显示某些内容?

最佳解决方案

<?php
global $current_user; // Use global
get_currentuserinfo(); // Make sure global is set, if not set it.
if ( ! user_can( $current_user, "subscriber" ) ) // Check user object has not got subscriber role
    echo 'User is a not Subscriber';
else
    echo 'User is a Subscriber';
?>

次佳解决方案

一个更简单的方法,比 @Brady 显示你是使用 current_user_can

if ( current_user_can( 'subscriber' ) )
    echo "Hi, dear subscriber! Glad seeing you again!";

MU

还有一个等同于 MU 安装的命名为 current_user_can_for_blog

global $blog_id;
if ( current_user_can_for_blog( $blog_id 'subscriber' ) )
    echo "Hi, dear subscriber! Glad seeing you again on this blog!";

幕后

当查看功能 for singleMU installations 的功能的来源时,您将看到,两者基本上都依赖于 wp_get_current_user(),然后检查 has_cap 。现在,如果你想看看帽子来自哪里,那么 WP_User 类/对象进入游戏。

这套的其他成员

那么还有 author_can( $GLOBALS['post'], 'capability' ); 。所有这些功能都在~/wp-includes/capabilities 之内。

什么时候用什么?

现在,current_user_can(_FOR_BLOG)user_can 的区别在哪里?

  • user_can()是较新的 (自 3.1 以来),但需要用户作为对象。因此,您可以在不想将目标用户定位到某些用户的情况下使用它。

  • current_user_can_*()是显而易见的。

  • author_can()允许您检查 Post 对象的功能。此对象仅适用于已在 DB 中的帖子。所以主要是允许/拒绝访问特定的帖子功能。

参考文献

注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。