确定wp_get_NAV_MENU_ITEMS的主题位置

时间:2013-08-01 作者:Daniel A. White

当使用修改菜单时,是否有方法确定菜单用于哪个主题放置wp_get_nav_menu_items 过滤器挂钩?

我只想在某些菜单中添加项目,我不想依赖于菜单的ID或名称。

1 个回复
SO网友:Milo

不确定这是最简单的方法,但您可以通过以下方式有条件地将筛选器添加到要修改的位置wp_nav_menu_args 过滤时间wp_nav_menu 调用,然后立即删除过滤器,使其不会应用于其他菜单。

function wpa108544_nav_menu_args( $args ){
    // check if it\'s the location we want the filter applied to
    if( \'primary\' == $args[\'theme_location\'] )
        add_filter( \'wp_get_nav_menu_items\', \'wpa108544_get_nav_menu_items\', 10, 3 );

    return $args;
}
add_filter( \'wp_nav_menu_args\', \'wpa108544_nav_menu_args\' );


function wpa108544_get_nav_menu_items( $items, $menu, $args ){
    // remove the filter
    remove_filter( current_filter(), __FUNCTION__, 10, 3 );

    // do your menu manipulation stuff here
}

结束

相关推荐

get_posts() and filters

我为添加了自定义筛选函数the_posts 在插件中筛选。add_filter(\'the_posts\', \'posts_filter\'); function posts_filter() { … } 这在主循环中运行得很好,这意味着帖子会按照我在posts_filter 作用但我正在打电话get_posts() 在ajax请求中获取一些帖子。在那里,过滤器不起作用。query_posts() 或自定义wp_query 不要工作太多。所以问题是:我如何才能在主循环旁获得按the_p