将自定义爬行器限制为仅限前端

时间:2013-04-27 作者:fightstarr20

我正在使用以下自定义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 );
它工作正常,但也会影响仪表板中的菜单页面,是否有办法限制爬虫程序仅影响前端?

1 个回复
最合适的回答,由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 );

结束

相关推荐

将动态内容添加到Walker类中的end_lvl

我试图在每个下拉菜单(子菜单)的末尾添加唯一的内容。我已经成功地编辑了walker类的end\\u lvl函数,将div添加到每个子菜单的末尾,但现在我迷失了下一步:基于父菜单id创建一个条件语句以响应不同的内容。有什么想法/建议吗?这就是我所拥有的(我知道它显然不起作用,因为我试图使用项数组,但使用菜单父id)。很明显,我不太明白这一点。function start_lvl( &$output, $depth = 0, $args = array() ) { $indent =