【问题标题】:Getting currently active menu title in wordpress在 wordpress 中获取当前活动的菜单标题
【发布时间】:2015-07-27 00:40:45
【问题描述】:

我需要在 wordpress 的每个页面上获取当前活动的菜单项(菜单标题,如主页、关于我们等)。我正在使用 wordpress 代码显示菜单并正确显示。代码如下,

    $menu_name = 'primary';
    if ( ( $locations = get_nav_menu_locations() ) && isset( $locations[ $menu_name ] ) )
    {
        $menu = wp_get_nav_menu_object( $locations[ $menu_name ] );
        $menu_items = wp_get_nav_menu_items($menu->term_id);
        $menu_list = '<ul id="menu-' . $menu_name . '" class="nav navbar-nav" style="width:100%;">';

        foreach ( (array) $menu_items as $key => $menu_item )
        {
            $title = $menu_item->title;
            $url = $menu_item->url;
            $menu_list .= '<li class="menu-line"><a href="' . $url . '">' . $title . '</a></li>';
        }
        $menu_list .= '</ul>';
    } else {
    $menu_list = '<ul><li>Menu "' . $menu_name . '" not defined.</li></ul>';
    }
    echo $menu_list;

但我现在无法确定哪个菜单项处于活动状态。 任何帮助表示赞赏!

【问题讨论】:

  • 它工作完美吗?
  • 对我来说它工作得很好..

标签: php wordpress menu styles


【解决方案1】:

像这样更新您的代码并根据您的要求添加您的 css。

<?php
 $menu_name = 'primary';
    if ( ( $locations = get_nav_menu_locations() ) && isset( $locations[ $menu_name ] ) )
    {
        $menu = wp_get_nav_menu_object( $locations[ $menu_name ] );
        $menu_items = wp_get_nav_menu_items($menu->term_id);
        $menu_list = '<ul id="menu-' . $menu_name . '" class="nav navbar-nav" style="width:100%;">';

        foreach ( (array) $menu_items as $key => $menu_item )
        {
            $title = $menu_item->title;
            $url = $menu_item->url;
            $active = '';
            $actual_link = "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";           
            if($url == $actual_link) 
            {
                 $active = 'active';
            }
            else
            {
                $active = '';
            }
            $menu_list .= '<li class="menu-line"><a href="' . $url . '" class="'.$active.'">' . $title . '</a></li>';
        }
        $menu_list .= '</ul>';
    } else {
    $menu_list = '<ul><li>Menu "' . $menu_name . '" not defined.</li></ul>';
    }
    echo $menu_list;
?>

CSS如下

<style>
.active { border:1px solid #f00;}
</style>

它适用于我的代码。

【讨论】:

    猜你喜欢
    • 2017-03-11
    • 2023-04-10
    • 1970-01-01
    • 1970-01-01
    • 2013-09-01
    • 2016-01-06
    • 2017-06-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多