在 wordpress 中仅将菜单 permalink/hyperlink 替换为菜单 name/slug

Replace menu permalink/hyperlink with only menu name/slug in wordpress

我不知道我问的是否正确,但我会尝试。 我这样做是为了历史推送状态目的。

代码 获取没有 ulli 的菜单:

$topmenu= array(
  'container'       => false,
  'echo'            => false,
  'items_wrap'      => '%3$s',
  'depth'           => 0
);

echo strip_tags(wp_nav_menu( $topmenu), '<a>');

目前,它只给我 <a> 标签和预期的 href

例如:

<a href="http://example.com/page1">Page 1</a>
<a href="http://example.com/page2">Page 2</a>
<a href="http://example.com/page3">Page 3</a>
// etc

我的问题:

如何在 href 属性中 disable/hide 完整 permalink/hyperlink,但继续显示页面错误?

我需要的例子:

<a href="/page1"></a>
// etc

我试图让这项工作改变nav-menu-template.php,但我失败了。

感谢您的回答。

那么就不需要使用 wp_nav_menu 构建导航了。 如果您只想获取您在 wordpress 后端设置的导航链接,您需要导航的名称、id 或 slug。

您可以通过

获得nav_menu_items
$items = wp_get_nav_menu_items( 'name_of_your_navigation' );

现在您需要像这样从每个项目的 url 中删除 home_url

foreach ( $items as $item ) {
    $url = str_replace( home_url(), '', $item->url );
    echo '<a href="' . $url . '">' . $url . '</a>';
}