我想通过当前的post ID获取导航菜单名称。在我的数据库中搜索了几个小时后,我发现导航菜单基本上只是分类法“nav\\u menu”的术语。但由于某些原因,它们的工作原理不同。
我尝试使用get\\u the\\u terms()函数获取术语(导航菜单),但这不会返回任何结果。
global $post;
get_the_terms( $post->ID, \'nav_menu\' );
我找不到其他函数来获取“nav\\U菜单”分类法的“术语”。wp_get_nav_menu_items 例如,返回菜单中的帖子,这不是我需要的。我想我需要创建自己的功能,但我找不到导航菜单的数据库结构是如何工作的。。
EDIT:
我做了以下功能,但@Rars给了我一个更快更干净的选择。function get_post_menu( $post_id = null, $output = \'term_id\' ) {
if( ! isset( $post_id ) ) {
global $post;
$post_id = $post->ID;
}
global $wpdb;
$menu = $wpdb->get_results( "
SELECT term_taxonomy_id
FROM $wpdb->term_relationships
WHERE object_id =
(SELECT post_id
FROM $wpdb->postmeta
WHERE meta_key = \'_menu_item_object_id\'
AND meta_value = $post_id)"
, OBJECT
);
$term = get_term_by( \'term_taxonomy_id\', $menu[0]->term_taxonomy_id, \'nav_menu\' );
return $term->$output;
}