当使用修改菜单时,是否有方法确定菜单用于哪个主题放置wp_get_nav_menu_items
过滤器挂钩?
我只想在某些菜单中添加项目,我不想依赖于菜单的ID或名称。
当使用修改菜单时,是否有方法确定菜单用于哪个主题放置wp_get_nav_menu_items
过滤器挂钩?
我只想在某些菜单中添加项目,我不想依赖于菜单的ID或名称。
不确定这是最简单的方法,但您可以通过以下方式有条件地将筛选器添加到要修改的位置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
}
我为添加了自定义筛选函数the_posts 在插件中筛选。add_filter(\'the_posts\', \'posts_filter\'); function posts_filter() { … } 这在主循环中运行得很好,这意味着帖子会按照我在posts_filter 作用但我正在打电话get_posts() 在ajax请求中获取一些帖子。在那里,过滤器不起作用。query_posts() 或自定义wp_query 不要工作太多。所以问题是:我如何才能在主循环旁获得按the_p