活动子菜单项不显示在带有Bootstrap的Wordpress上

时间:2015-12-06 17:42:34

标签: php css wordpress twitter-bootstrap

关于子菜单真的很难解决这个问题。我使用Bootstrap为Wordpress制作了一个自定义主题。我成功设法使用wp_bootstrap_navwalker下拉子菜单链接使我的主导航菜单动态化。

我还制作了一个nav-pills菜单,在主站点导航菜单和页眉下方显示为动态子菜单。它显示该特定父级的所有子页面。

我的问题是,当您使用此菜单转到某个页面时,菜单上的活动项目不会显示为活动状态。

这是我的HTML / PHP:

<div class="nav-grey-band">
<?php   
    $args = array(
    'menu'              => 'primary',
    'theme_location'    => 'primary',
    'submenu'           => 'The Team',
    'container_class'   => 'centered-pills',
    'menu_class'        => 'nav nav-pills'
);

wp_nav_menu( $args );
?>
</div>

以下是我的functions.php中的内容:





// Register Custom Navigation Walker
require_once('wp_bootstrap_navwalker.php');

add_filter( 'wp_nav_menu_objects', 'submenu_limit', 10, 2 );

function submenu_limit( $items, $args ) {

    if ( empty( $args->submenu ) ) {
        return $items;
    }

    $ids       = wp_filter_object_list( $items, array( 'title' => $args->submenu ), 'and', 'ID' );
    $parent_id = array_pop( $ids );
    $children  = submenu_get_children_ids( $parent_id, $items );

    foreach ( $items as $key => $item ) {

        if ( ! in_array( $item->ID, $children ) ) {
            unset( $items[$key] );
        }
    }

    return $items;
}

function submenu_get_children_ids( $id, $items ) {

    $ids = wp_filter_object_list( $items, array( 'menu_item_parent' => $id ), 'and', 'ID' );

    foreach ( $ids as $id ) {

        $ids = array_merge( $ids, submenu_get_children_ids( $id, $items ) );
    }

    return $ids;
}




0 个答案:

没有答案
相关问题