メニュー名はSocial Network
です。メニューIDを取得したい私は以下を試しましたが、成功しませんでした。
global $wpdb;
$menu_slug = 'social-network';
$menu_id = $wpdb->get_results(
"
SELECT TERM_ID
FROM $wpdb->wp_terms
WHERE name = ".$menu_slug."
"
);
echo $menu_id;
関数get_term_byを使用してフィールドparamに 'name'を使用することができます。
<?php get_term_by( $field, $value, $taxonomy, $output, $filter ) ?>
例:
$term = get_term_by('name', 'Social Network', 'nav_menu');
$menu_id = $term->term_id;
これはコーデックスページへのリンクです: http://codex.wordpress.org/Function_Reference/get_term_by
お役に立てれば。
必要なのはget_terms()
だけです
wp_menu_id_by_name( $name )
を書きましょう/**
* Gets a menu id by name
*
* @param string $name The menu name
* @return int|boolean The menu id or false if not found
*/
function wp_menu_id_by_name( $name ) {
$menus = get_terms( 'nav_menu' );
foreach ( $menus as $menu ) {
if( $name === $menu->name ) {
return $menu->term_id;
}
}
return false;
}
echo 'My Special Menu id is ' . wp_menu_id_by_name( 'My Special menu' );
// Outputs: My Special Menu id is 3
あなたは正しいコードを使わないで、代わりにこれを使ってください:
global $wpdb;
$tablename = $wpdb->prefix.'terms'; // use always table prefix
$menu_name = 'top-menu'; // menu name
$menu_id = $wpdb->get_results(
"
SELECT term_id
FROM ".$tablename."
WHERE name= '".$menu_name."'
"
);
// results in array
foreach($menu_id as $menu):
echo $menu->term_id;
endforeach;