如何让用户访问基于角色的插件功能?

时间:2013-12-11 作者:Netizen

我使用一个名为“Live Edit“允许作者和编辑编辑前端编辑内容。但问题是该插件允许任何登录用户编辑内容。我希望编辑(由插件指定。不是WP的默认编辑按钮)按钮根据其角色进行访问。我不知道如何根据角色使其可访问。因此,尝试使其仅显示给作者和更高角色。

我想在循环中做这样的事情。php:

<?php
global $current_user; 
get_currentuserinfo(); 
if ( user_can( $current_user, "author" ) ){ 
// Show Role
// Show Subscriber Image
} 
代码如下:

 <?php post_class( \'post clearfix \' . $themify->get_categories_as_classes(get_the_ID()) . \' \' . $themify->get_post_color_class(get_the_ID()) ); if(function_exists("live_edit")){ live_edit(\'post_title, field1\'); } ?>
以及

<div <?php if(function_exists("live_edit")){ live_edit(\'post_content, myfield2\'); }?>>
        <?php if( function_exists(\'the_field\') ) the_field(\'myfield1\'); ?> </div>
        <?php if( function_exists(\'the_field\') ) the_field(\'myfield2\');  ?>
</div>
我不确定如何在模板中或通过函数执行。php。有谁能帮助我或引导我实现我的目标?

这是循环。pastebin的php-http://pastebin.com/9MVY64LJ

live edit类用于第8行和第57行。

enter image description here

1 个回复
最合适的回答,由SO网友:Paul Geisler 整理而成

您可以检查当前用户是否是Author (WP-Codex)

$current_user_is_allowed_to_edit = false;
if ( current_user_can(\'delete_posts\') ) {
        $current_user_is_allowed_to_edit = true;
}
并在实现实时编辑功能的if语句中使用它。

以下是整个代码(针对用户角色):http://pastebin.com/fY7UPcB1

编辑:

以下是新代码(检查用户角色,如果是他自己的帖子):

// Check if User can Edit
$current_user_is_allowed_to_edit = false;
$user_ID = get_current_user_id();
$post_author_ID = the_author_meta(\'ID\');

if ( current_user_can(\'delete_posts\') && $post_author_ID == $user_ID ) {
        $current_user_is_allowed_to_edit = true;
}

http://pastebin.com/NFtNVAGE

编辑#2:

现在,该按钮将仅为撰写文章的用户(作者)和具有更高用户角色的每个用户(编辑、管理员)显示。

// Check if User can Edit
// Set permission to false = \'not allowed\'
$current_user_is_allowed_to_edit = false;
// Get the ID of the user who watches this post
$user_ID = get_current_user_id();
// Get the ID of the Post-Writer
$post_author_ID = the_author_meta(\'ID\');

//   Check if User has role \'Editor\' and higher  OR is the Post-Writer
if ( current_user_can(\'delete_posts\') || $post_author_ID == $user_ID ) {
    // Set permission to true = \'allowed\'
    $current_user_is_allowed_to_edit = true;
}
代码:http://pastebin.com/8u6bV018

结束

相关推荐

Pagination on Custom Loop

我想将最新帖子的样式与自定义页面上某个类别中的所有其他帖子的样式不同。到目前为止,我有下面的代码,它正是这样做的:<?php if (have_posts()) : ?> <?php query_posts(\"cat=4&showposts=1\"); ?> <?php while (have_posts()) : the_post(); ?> (Style1)<?php the_title(); ?><