如何有条件地添加wp_filter

时间:2013-11-07 作者:ILikeTurtles

我有一个我创建的WP过滤器,我只想在某些菜单项上运行。

我试图使用-

function add_nav_class($output) {
$output= preg_replace(\'/<a/\', \'<a class="lsbb"\', $output, -1);
return $output;
}

function wp_nav_menu_conditionals() {
   if(!wp_nav_menu(\'theme_location\' => \'footer_menu\')) {
      add_filter(\'wp_nav_menu\', \'add_nav_class\');
   }
}
add_action(\'wp\', \'wp_nav_menu_conditionals\');
我想在所有未列为theme\\u location footer\\u菜单的菜单上添加\\u过滤器。在WP中有这样做的方法吗?如果菜单使用的是theme\\u location footer\\u菜单,我希望它不要使用add\\u filter。

有谁能告诉我如何有条件地使用add\\u nav\\u类吗?

1 个回复
SO网友:Pat J

Edit -- 修复了if() 陈述

function add_nav_class( $output ) {
    $menu_obj = get_term_by( \'slug\', \'footer_menu\', \'nav_menu\' );

    // $menu_obj = get_term_by( \'name\', \'Footer Menu\', \'nav_menu\' );
    // if the \'slug\' version doesn\'t work, try the \'name\' version
    // Just make sure you\'re using the correct name

    if( \'footer_menu\' == $menu_obj->name ) ) {
        return $output; // bail if it\'s the \'footer_menu\'
    }
    $output= preg_replace(\'/<a/\', \'<a class="lsbb"\', $output, -1);
    return $output;
}

add_filter(\'wp_nav_menu\', \'add_nav_class\');
Edit 2 -- 已替换get_term() 具有get_term_by().

参考帮助this Answer 来自Chip Bennettget_term_by()

结束

相关推荐

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