我需要一些专业人士的眼睛。
总之,我将根据登录角色向主NAV添加一个按钮/链接。
我有一个“工作”代码:
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。“按钮将不会出现”,但它总是工作/出现在网站的其余部分。
(预先谢谢:)
发布于 2022-04-19 16:00:38
像这样的东西应该是更有效率。顺便说一句,这是基本的PHP,而不是WP特定的。
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;
}https://wordpress.stackexchange.com/questions/404883
复制相似问题