如果位于特定页面和特定用户角色(IS_PAGE、CURRENT_USER_CAN),则在侧边栏中显示菜单

时间:2014-03-21 作者:Phantasmix

我尝试结合两个条件:is\\u page和current\\u user\\u can,但没有成功。

在StackExchange上找到了一个说明用户角色的示例。但是Wordpress codex说“不要将角色名称传递给当前的\\u user\\u can(),因为这不能保证正常工作。”在同一页上,包含此链接以供参考/进一步阅读:http://docs.appthemes.com/tutorials/wordpress-check-user-role-function/

我尝试修改该代码,并将其添加到我的函数中。php

function plastics_check_user_role( $role, $user_id = null ) {

if ( is_numeric( $user_id ) )
$user = get_userdata( $user_id );
else
    $user = wp_get_current_user();

if ( empty( $user ) )
return false;

return in_array( $role, (array) $user->roles );
}
然后,这是我在侧边栏中输入的内容。php文件:

<?php
    if (is_page(array(\'page1\')) && plastics_check_user_role(\'Administrator\')) :
        echo \'<div class="widget-title">Title 1</div>\' . wp_nav_menu(array(\'theme_location\'=>\'menu1\' ));
    elseif (is_page(array(\'page2\'))) :
        echo \'<div class="widget-title">Page 2</div>\' . wp_nav_menu(array(\'theme_location\'=>\'menu2\' ));
    elseif (is_page(array(\'page 3\'))) :
        echo \'<div class="widget-title">Page 3</div>\' . wp_nav_menu(array(\'theme_location\'=>\'menu3\' ));
    endif;
?>
仍然不工作。我错过了什么?是因为它在侧边栏中吗?

我更喜欢详细说明角色,而不是指定用户功能,因为我的5个自定义用户角色具有完全相同的功能,但我会根据角色限制页面。(黑客解决方法:我可以为每个角色添加自定义功能,但这似乎是一种奇怪的方式……)

1 个回复
SO网友:Phantasmix

更改了函数中的代码。php对此:

function get_user_role() {
global $current_user;

$user_roles = $current_user->roles;
$user_role = array_shift($user_roles);

return $user_role;
}
在侧边栏中。php:

<?php
if (is_page(array(\'page1\')) && get_user_role(\'Administrator\')) :
    echo \'<div class="widget-title">Title 1</div>\' . wp_nav_menu(array(\'theme_location\'=>\'menu1\' ));
elseif (is_page(array(\'page2\'))) :
    echo \'<div class="widget-title">Page 2</div>\' . wp_nav_menu(array(\'theme_location\'=>\'menu2\' ));
elseif (is_page(array(\'page 3\'))) :
    echo \'<div class="widget-title">Page 3</div>\' . wp_nav_menu(array(\'theme_location\'=>\'menu3\' ));
endif;
?>
资料来源:https://stackoverflow.com/questions/1458362/how-to-get-the-currently-logged-in-users-role-in-wordpress

http://wordpress.org/support/topic/how-to-get-the-current-logged-in-users-role?replies=10#post-1600295

结束

相关推荐