当‘post_name’返回id时,我如何获取页面url slug?

时间:2016-12-13 作者:afilbert

我有以下代码:

$menu = get_term( $locations[$theme_location], \'nav_menu\' );
$menu_items = wp_get_nav_menu_items($menu->term_id);

foreach( $menu_items as $menu_item ) {
    $link = $menu_item->url;
    $title = $menu_item->title;
    $slug = $menu_item->post_name;
}
的值$slug 生成页面ID,而不是我要查找的url段塞,除非$menu_item 是自定义链接,而不是页面。更重要的是,实际的url有我要找的slug,但是page_name 包含与页面id相同的值。

示例:

echo $link;
>> \'http://localhost:8888/trips/\'
echo $title;
>> \'Trips\'
echo $slug;
>> 6195 // But I\'m looking for \'trips\'
我可以把鼻涕虫从$link, 但我认为必须有一种更优雅的方式来实现我所追求的目标。

问题如下this one 还有很多人建议抓取post_name. 我错过了什么?

1 个回复
最合适的回答,由SO网友:Sumesh S 整理而成

尝试以下操作:

$menu = get_term( $locations[$theme_location], \'nav_menu\' );
$menu_items = wp_get_nav_menu_items($menu->term_id);

foreach( $menu_items as $menu_item ) {
    $link = $menu_item->url;
    $title = $menu_item->title;
    $slug = basename($menu_item->url);
}
将整个permalink传递给basename 函数,该函数将自动处理URL并只提供slug。

相关推荐

Find all URLs for a post

我想从wordpressblog中提取所有帖子的链接。这似乎很简单,可以使用wp-cli来完成。例如:wp post list --field=url --post_type=post --posts_per_page=-1 --post_status=publish 然而,我的站点更复杂,因为我在某个时间点更改了站点的永久链接结构。现在,wordpress似乎在这里做了明智的事情;之前存在的所有永久链接都被保留,并且正在使用301重定向进行重定向。这太棒了,就我的一生而言,我找不到哪里可以看到