特定菜单的自定义静态链接就在wp_NAV_MENU函数正在工作之前/下一个

时间:2016-06-13 作者:gijoe

我正在尝试在内置菜单的下一个/之前添加自定义链接,特别是main_menu. 我已经把这个放在我的functions.php 并在中给出了列表项nav-menu-after.php 也在before文件中,但它不起作用。

add_filter( \'wp_nav_menu_items\',do_wp_nav_menu_items );
function do_wp_nav_menu_items( $menu, $args = array() ) {
    if( file_exists( TEMPLATEPATH . \'/nav-menu-before.php\' ) && $args->theme_location == \'main_menu\' ) {
        ob_start();
        @include TEMPLATEPATH . \'/nav-menu-before.php\';
        $nav_menu_before = ob_get_clean();
    }

    if( file_exists( TEMPLATEPATH . \'/nav-menu-after.php\'  ) && $args->theme_location == \'main_menu\' ) {
        ob_start();
        @include TEMPLATEPATH . \'/nav-menu-after.php\';
        $nav_menu_after = ob_get_clean();
    }

    return $nav_menu_before . $menu . $nav_menu_after;
}
如果我删除此部分:

&& $args->theme_location == \'main_menu\' 
它工作得很好,但自定义静态链接出现在我拥有的整个菜单(页脚菜单、主菜单)中。不仅仅是main_menu.

1 个回复
最合适的回答,由SO网友:Sumit 整理而成

如果不传递回调函数中需要多少参数,那么add_filter 仅为您提供onefirst 论点

因为的默认参数add_filter

add_filter ( string $tag, callable $function_to_add, int $priority = 10, int $accepted_args = 1 );
$accepted_args1 如果你没有通过。

因此$args 在回调函数中始终为空数组。

改变

add_filter(\'wp_nav_menu_items\',do_wp_nav_menu_items);

add_filter(\'wp_nav_menu_items\', \'do_wp_nav_menu_items\', 10, 2);

相关推荐

Use Post ID in functions.php

我的functions.php. 它工作得很好:当预订时,它会给我发电子邮件。易于理解的然而,我希望它能给我发送该预订的post ID,而不仅仅是“你好,世界!”消息帮助function add_to_system() { // get post meta // $email = get_post_meta(\'\',$post_id) // $post_id = get_queried_object_id(); mail(\'michael.mc