我正在使用以下自定义walker隐藏使用wp\\u get\\u nav\\u menu\\u项创建的navmenu中的登录和注册页面。。。。。
function wpse31748_exclude_menu_items( $items, $menu, $args ) {
// Iterate over the items to search and destroy
if ( is_user_logged_in() ) {
$registerpage = get_page_by_title( \'Register\' );
$loginpage = get_page_by_title( \'Login\' );
foreach ( $items as $key => $item ) {
if ( $item->object_id == $registerpage->ID ){
unset( $items[$key] );
}
elseif ( $item->object_id == $loginpage->ID ){
unset( $items[$key] );
}
else{}
}
return $items;
} else {
return $items;
}
}
add_filter( \'wp_get_nav_menu_items\', \'wpse31748_exclude_menu_items\', null, 3 );
它工作正常,但也会影响仪表板中的菜单页面,是否有办法限制爬虫程序仅影响前端?
最合适的回答,由SO网友:birgire 整理而成
您可以尝试!is_admin()
因此,您的代码是:
function wpse31748_exclude_menu_items( $items, $menu, $args ) {
// Iterate over the items to search and destroy
if ( !is_admin() && is_user_logged_in() ) {
$registerpage = get_page_by_title( \'Register\' );
$loginpage = get_page_by_title( \'Login\' );
foreach ( $items as $key => $item ) {
if ( $item->object_id == $registerpage->ID ){
unset( $items[$key] );
}elseif ( $item->object_id == $loginpage->ID ){
unset( $items[$key] );
}
}
}
return $items;
}
add_filter( \'wp_get_nav_menu_items\', \'wpse31748_exclude_menu_items\', null, 3 );