WordPress开发:获取当前页面菜单的current menu item

2023-05-2111:26:25后端程序开发Comments947 views字数 894阅读模式

遇到一个问题,要显示当前页面的面包屑导航,只是这个面包屑路径反应的不是页面自身的层级关系,而是该页面在菜单导航中的位置。因此需要检测该页面所在菜单的current menu item,在stackexchange上找到了一个不错的方法,记录一下。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/40937.html

使用wp_nav_menu_objects filter查找current menu item,在调用wp_nav_menu之前先过滤一下这个filter的值,找到current menu item,将需要的信息,例如menu ID,标题或url等,记录到一个全局变量里。等调用完wp_nav_menu后,就可以使用这个全局变量显示信息了。代码如下文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/40937.html

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’]记录了当前菜单的current menu item的标题。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/40937.html

一些比较有用的信息如下文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/40937.html

$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但不显示文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/40937.html

  • 本站内容整理自互联网,仅提供信息存储空间服务,以方便学习之用。如对文章、图片、字体等版权有疑问,请在下方留言,管理员看到后,将第一时间进行处理。
  • 转载请务必保留本文链接:https://www.cainiaoxueyuan.com/bc/40937.html

Comment

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定