WordPress部分内容,让用户评论可见,如果你设置, 登陆用户才可以评论,还可以达到用户登陆后评论可见的效果。那么WordPress网站如何实现评论后可见隐藏部分内容?
将下面的代码添加到主题的 functionsphp 文件:
//部分内容评论可见function reply_to_read($atts, $content=null) {
extract(shortcode_atts(array("notice" => '<p class="reply-to-read">温馨提示: 此处内容需要<a href="" title="评论本文">评论本文</a>后才能查看</p>'), $atts));
$email = null;
$user_ID = (int) wp_get_current_user()->ID;
if ($user_ID > 0) {
$email = get_userdata($user_ID)->user_email;
//对站长直接显示内容
$admin_email = "admin@ymjihecom"; //站长Email
if ($email == $admin_email) {
return $content;
}
} else if (isset($_COOKIE['comment_author_email_' COOKIEHASH])) {
$email = str_replace('%40', '@', $_COOKIE['comment_author_email_' COOKIEHASH]);
} else {
return $notice;
}
if (empty($email)) {
return $notice;
}
global $wpdb;
$post_id = get_the_ID();
$query = "SELECT `comment_ID` FROM {$wpdb->comments} WHERE `comment_post_ID`={$post_id} and `comment_approved`='1' and `comment_author_email`='{$email}' LIMIT 1";
if ($wpdb->get_results($query)) {
return do_shortcode($content);
} else {
return $notice;
}
}
add_shortcode('reply', 'reply_to_read');
很简单 你只需要将名字定义为 single-categoryphp 即可 比如你a分类的别名为wordpress,那就将名字命名为single-wordpressphp,这样,只要是这个分类下的文章,就会自动调用这个文件的样式,以此类推。
你这个问题我昨天不是回答过你了吗?
注:以下内容在WP
34+上测试通过current_user_can()的正确用法current_user_can()文档中有一句话要注意一下Do
not
pass
a
role
name
to
current_user_can(),
as
this
is
not
guaranteed
to
work
correctly意思是说传递用户角色名称(如author、contributor)作为参数不能100%保证返回正确的结果,正确的用法是传递$capability,从这个函数的表面意思看,参数是权限比参数是角色名称更靠谱。所以,要根据不同角色拥有的权限来判断用户角色,用户权限可以在Roles
and
Capabilities中找到。判断用户是否为管理员(Administrator)if(
current_user_can(
'manage_options'
)
)
{
echo
'The
current
user
is
a
administrator';
}判断用户是否为编辑(Editor)if(
current_user_can(
'publish_pages'
)
&&
!current_user_can(
'manage_options'
)
)
{
echo
'The
current
user
is
an
editor';
}判断用户是否为作者(Author)if(
current_user_can(
'publish_posts'
)
&&
!current_user_can(
'publish_pages'
)
)
{
echo
'The
current
user
is
an
author';
}判断用户是否为投稿者(Contributor)if(
current_user_can(
'edit_posts'
)
&&
!current_user_can(
'publish_posts'
)
)
{
echo
'The
current
user
is
a
contributor';
}判断用户是否为订阅者(Subscriber)if(
current_user_can(
'read'
)
&&
!current_user_can(
'edit_posts'
)
)
{
echo
'The
current
user
is
a
subscriber';
}用$current_user判断$current_user是WordPress的一个全局变量,当用户登录后,这个里面就会有用户的角色和权限信息。当WordPress的init
action执行后,就可以安全的使用$current_user全局变量了。在模板文件中判断登录用户是否为作者(Author)global
$current_user;
if(
$current_user->roles[0]
==
'author'
)
{
echo
'The
current
user
is
an
author';
}
在functionsphp中判断用户是否为作者(Author)add_action(
'init',
'check_user_role'
);
function
check_user_role()
{
global
$current_user;
if(
$current_user->roles[0]
==
'author'
)
{
echo
'The
current
user
is
an
author';
}
}
之所以要使用add_action(
'init',
'check_user_role'
);是因为$current_user这个全部变量到init
action执行时才完成赋值,既然要读它的内容,至少要等到它的内容准备好后再读取。functionsphp的代码先与init
action执行,所以在functionsphp中直接写global
$current_user是无法获取用户信息的。详细信息可以参考《WordPress
Actions加载顺序》。检查用户角色之前,还可以先检查一下用户是否登录
先判断下是否登录,然后获取当前用户对象,然后获取当前用户对象的信息:
if(is_user_logged_in()){$current_user = wp_get_current_user();
/
@example Safe usage: $current_user = wp_get_current_user();
if ( !($current_user instanceof WP_User) )
return;
/
echo 'Username: ' $current_user->user_login '<br />';
echo 'User email: ' $current_user->user_email '<br />';
echo 'User first name: ' $current_user->user_firstname '<br />';
echo 'User last name: ' $current_user->user_lastname '<br />';
echo 'User display name: ' $current_user->display_name '<br />';
echo 'User ID: ' $current_user->ID '<br />';
}
以上就是关于wordpress 怎么设置订阅者无权限查看评论内容全部的内容,包括:wordpress 怎么设置订阅者无权限查看评论内容、如何限制WordPress用户在不同文章分类上的权限、WordPress:如何判断登录用户的角色等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)