Code前端首页关于Code前端联系我们

WordPress开发:获取当前页面菜单的当前菜单项

terry 2年前 (2023-09-24) 阅读数 63 #后端开发

显示当前页面的面包屑导航有问题,但是这个面包屑路径反映的并不是页面本身的层级关系,而是菜单中的页面导航位置。因此,我们需要检测页面所在菜单中当前的菜单项。我在stackexchange上找到了一个很好的方法并注册了它。

使用wp_nav_menu_objects过滤器查找当前菜单项。在调用wp_nav_menu之前,过滤此过滤器的值以找到当前的菜单项。在全局变量中记录所需的信息,例如菜单 ID、标题或 url 等。调用wp_nav_menu后,可以使用该全局变量来显示信息。代码如下

add_filter( 'wp_nav_menu_objects', 'wpse16243_wp_nav_menu_objects' );
function wpse16243_wp_nav_menu_objects( $sorted_menu_items )
{
    foreach ( $sorted_menu_items as $menu_item ) {
        if ( $menu_item->current ) {
            $GLOBALS['wpse16243_title'] = $menu_item->title;
            break;
        }
    }
    return $sorted_menu_items;
}

全局变量$GLOBALS[‘wpse16243_title’]记录了当前菜单中当前菜单项的标题。

一些更有用的信息如下

$menu_item->ID - Menu ID
$menu_item->title - 该菜单项名称
$menu_item->post_title - Post Title,不一定和菜单项名称相同
$menu_item->url -  固定链接
$menu_item->object_id - post ID
$menu_item->post_parent - Post Parent(例如page的parent page)
$menu_item->menu_item_parent - 指在该菜单中的层级关系

如果您需要在调用菜单之前使用它,您可以先调用wp_nav_menu,但不要显示它。

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

热门