首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果角色被登录,那么做一些事情。

如果角色被登录,那么做一些事情。
EN

WordPress Development用户
提问于 2022-04-17 16:15:35
回答 1查看 46关注 0票数 1

我需要一些专业人士的眼睛。

总之,我将根据登录角色向主NAV添加一个按钮/链接。

我有一个“工作”代码:

代码语言:javascript
复制
if ( ! function_exists( 'add_extra_item_to_nav_menu' ) ){

function add_extra_item_to_nav_menu( $items, $args ) {
    if (current_user_can('administrator') && is_user_logged_in() && $args->menu-5) {
        $items .= 'SHOP NOW ADMIN';
    }

    //School ROLEABC
            elseif (current_user_can('ROLEABC') && is_user_logged_in && $args->menu-5) {
                    $items .= 'SHOP NOW ABC';
            }
    //School ROLEXYZ
            elseif (current_user_can('ROLEXYZ') && is_user_logged_in && $args->menu-5) {
                    $items .= 'SHOP NOW XYZ';
            }

    return $items;

}

add_filter( 'wp_nav_menu_items', 'add_extra_item_to_nav_menu', 150, 2 );
}

它看起来很管用(它做了它应该做的),但是它是正确的吗?这是安全问题吗?我没把它关好吗?

SideNote:“有时”按钮不会只在主页上加载/显示;e.i。“按钮将不会出现”,但它总是工作/出现在网站的其余部分。

(预先谢谢:)

EN

回答 1

WordPress Development用户

回答已采纳

发布于 2022-04-19 16:00:38

像这样的东西应该是更有效率。顺便说一句,这是基本的PHP,而不是WP特定的。

代码语言:javascript
复制
function add_extra_item_to_nav_menu( $items, $args ) {

    $roles = [
        'administrator' => [ //Role - slug name
            'SCHOOL_NAME-A', //url path - appended to the end
            'ADMIN', // can be any name - appended to SHOP NOW button
        ],
        'ROLEABC' => [
            'SCHOOL_NAME-B',
            'ABC',
        ],
        'ROLEXYZ' => [
            'SCHOOL_NAME-C',
            'XYZ',
        ],
    ];

    foreach ( $roles as $role => $menu ) {
        if ( current_user_can( $role ) && is_user_logged_in() && $args->menu-5 ) {
            $items .= 'SHOP NOW ' . $menu[1] . '';
            break;
        }
    }

    return $items;
}
票数 2
EN
页面原文内容由WordPress Development提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://wordpress.stackexchange.com/questions/404883

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档