当前位置: 首页 > 知识库问答 >
问题:

如何通过 $post-> 或 $page->ID 获取菜单标签

逄征
2023-03-14

完全修改,请重新阅读

你好,我使用的主题显示页面的标题,而不是面包屑中的菜单标签。我试图让面包屑显示相关的菜单标签,如果它是可用的,如果不是,则默认为page_title。

我想出了一些我认为接近的代码。第4行///$ menu _ items = WP _ get _ nav _ menu _ items($ slug);返回null,它应该返回包含当前文章的$slug的导航项。显然,有些事情我不明白。

我试图做的是获取当前帖子的slug,然后使用slug获取导航项目帖子。然后提取导航项目的标题,并用它来代替面包屑中的页面标题。如果页面不在导航系统中,那么它应该默认为页面标题,就像ppc活动登录页面一样。

if ( is_page() && !$post->post_parent ) {
    $title = null;
    $slug = mpactMEDIA_get_the_slug( get_the_ID() );
    $menu_items = wp_get_nav_menu_items( $slug );
    //var_dump((array)$menu_items);
    foreach ( (array)$menu_items as $key => $menu_item ) {
    $title = $menu_item->post_title;
    }
    if ( $title ) { echo $delimiter . ' ' . $before . $title . $after; }
    else { echo $delimiter . ' ' . $before . get_the_title() . $after; }
}

我是我的函数.php文件我有以下函数

function mpactMEDIA_get_the_slug( $id=null ){
    if( empty($id) ) global $post;
    if( empty($post) ) return '';
        $id = $post->ID;
    endif;
    $slug = basename( get_permalink($id) );
    return $slug;
}

提前感谢您,

提姆

共有2个答案

边浩波
2023-03-14

检查wp_get_nav_menu_items的留档。它根本不将页面段塞作为参数。

如果要列出给定页面的子页面,请使用wp_list_pages并向其传递child_of参数。

另外,作为旁注,如果您知道$post并想要鼻涕虫,那只是$post -

厍建义
2023-03-14

我把这个问题看了几遍,来到这里寻找答案,最后自己做了一个。

function get_menu_label_by_post_id($post_id, $menu) {

    $menu_title = '';
    $nav = wp_get_nav_menu_items($menu);

    foreach ( $nav as $item ) {

        if ( $post_id == $item->object_id ) {
            $menu_title = $item->post_title;
            break;
        }

    }

    return ($menu_title !== '') ? $menu_title : get_the_title($post_id);

}

示例用法:

echo get_menu_label_by_post_id($post->ID, 'Primary Nav');

如果找到菜单标签,它将返回菜单标签,否则仅返回帖子ID的标题。

 类似资料:
  • 问题内容: 我正在尝试通过angularjs在html中查找元素。 这是html: 我试图通过类名多文件来获取按钮元素,然后我尝试 但是它不起作用,并且尝试过,但仅对标签起作用。 在angularjs中,有没有可以通过ID或类名获取元素的函数? 问题答案: 是DOM文档上的函数。它既不是jQuery也不是jqLit​​e函数。 使用时不要在类名前添加句号: 将其包装在jqLit​​e中(如果在An

  • 我正在使用PHP通过IMAP访问Gmail邮件。我想知道每封邮件都用什么标签标记。显然,谷歌有一个IMAP扩展,可以完全满足我的需求: https://developers.google.com/google-apps/gmail/imap_extensions#access_to_gmail_labels_x-转基因标签 但是,我不确定如何通过PHP使用此扩展。fetch_header等有PHP

  • 问题内容: 我知道我可以像这样获得流程的使用子流程: 但是我只想知道要写入进程的pid,我该 怎么做? 问题答案: 只需写信给:

  • 我正在尝试从特定目录中的google工作表列表(大约570个工作表)中删除多余的行和列(已知范围)。 我能够使用google drive API获取电子表格Id。但是,修改页面的尺寸需要图纸Id。 我无法找到通过驱动器API(文件属性)检索此工作表ID的方法,也无法找到任何关于如何在电子表格中列出可用工作表的留档,因为我有电子表格ID。 我尝试使用谷歌应用程序脚本来达到我的目标,但运行时间已经超过

  • 我读了“如何从数据帧的单元格中获取值?”以及“如何选择数据框的最后一列”。我有点困惑,什么是2018年接受的方法从熊猫数据帧的单元格获取值,因为已被弃用,并且在上的留档有点稀疏。我想按标签选择行,按位置/整数选择列。下面我使用的方法是2018年公认的方法吗?我有这个代码: 它生成一个字符串如下所示: 通过函数将其转换为数据帧,如下所示: 它是行的最后一列的值(整数1),标签为,我对此感兴趣。这是2

  • 问题内容: 如何列出基于特定产品变型的订单商品? 给定一个 变体ID ,我想生成一个包含该特定变体的所有 订单商品 的列表。 就我而言,我使用变体表示日期,并且产品本身是重复发生的事件,因此,此操作的目的是列出参加该特定日期的人员。 如果可以通过简单的用法(例如使用)或类似的方法来完成此操作,那将是令人惊讶的,但是否则我猜想自定义查询将是这种方式。 我只是似乎无法弄清楚在这种情况下表格是如何关联的