問題描述
我正在嘗試獲取導航中的所有 ID 並將其轉換為字符串,以便我可以使用它與 wp_query 來獲取只列在導航欄中的頁面。獲取 ID 的代碼:
$menu_name = 'primary';
if ( ( $locations = get_nav_menu_locations() ) && isset( $locations[ $menu_name ] )) {
$menu = wp_get_nav_menu_object( $locations[ $menu_name ] );
$menu_items = wp_get_nav_menu_items($menu->term_id);
}
foreach ( $menu_items as $menu_item ) {
$numbers[] = $menu_item->ID;
}
$number = implode(',',$numbers);
但是它返回錯誤的數字。當我去管理區域並將鼠標懸停在頁面上時,顯示在屏幕底部的地址欄中的數字不匹配。我究竟做錯了什麼?
最佳解決方案
菜單項目存儲在 posts 表中,並帶有 nav_menu_item 的 post_type 。那麼你所返回的是菜單項本身的 ID,而不是它所指向的。
菜單項引用的頁面/帖子 ID 存儲在 postmeta 表中,其中 post_id 與菜單項 ID 和 meta_key = _menu_item_object_id 匹配。獲取 meta_value(即菜單項指向的頁面) 的最簡單的方法是使用如下所示:
$numbers[] = get_post_meta( $menu_item->ID, '_menu_item_object_id', true );
參考文獻
注:本文內容整合自 Google/Baidu/Bing 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。