(1) カスタムメニューリンクでログアウト機能を使用するには? の回答で与えられたコードを使用して、プログラムでwp_nav_menu_objects
にメニュー要素を追加しました。動物」)。私はそれにidを与えます、1000と言います。
(2)同様に、私は(menu_item_parent
を親要素のidに固定する)既存の要素の子になりたい要素をうまく作成しました(要素 "Flowers"に "Jonquil"のように)。
(3)プログラムで追加された要素 "Animals"に子要素( "Cats"や "Dogs"と言う)を追加しようとすると問題が発生します。猫と犬は、まるでWPが親を見つけることができなかったかのように、動物と同じレベルに表示されます。
何が足りないのかという考え?
2014年の回答以来、WordPressの機能は変わりました。
今日(バージョン4.6.1)から、このコードは "My Menu"という名前のメインメニュー、メインアイテムとサブアイテムを作成します。
コードを実行するには、 子テーマ にfunctions.phpファイルを貼り付けて保存します。
$menu_id = wp_create_nav_menu('My Menu');
$parent_item = wp_update_nav_menu_item($menu_id, 0, array(
'menu-item-title' => __('Main Page'),
'menu-item-url' => home_url( '/main-page/' ),
'menu-item-status' => 'publish',
)
);
wp_update_nav_menu_item($menu_id, 0, array(
'menu-item-title' => __('Sub Item Page'),
'menu-item-url' => home_url( '/sub-item-page/' ),
'menu-item-status' => 'publish',
'menu-item-parent-id' => $parent_item)
);
ドキュメント:
あなたのコードはこのように見えるかもしれません
add_filter( 'wp_nav_menu_objects', 'ravs_add_menu_parent_class' );
function ravs_add_menu_parent_class( $items ) {
foreach ( $items as $item ) {
print_r($item);//print each menu item an get your parent menu item-id
}
$link = array (
'title' => 'Cats',
'menu_item_parent' => id of Animals menu like 1372,
'ID' => '',
'db_id' => '',
'url' => 'www.google.com'
);
$items[] = (object) $link;
return $items;
}
レオ、
Ravsは既存のWP_Post_Objectにsub navを追加するのが正しいです、しかし、あなたがnavアイテムを作成しているならば、それにsubnavを加えたいなら、あなたはnavアイテムのdb_idをセットしなければなりません:
add_filter( 'wp_nav_menu_objects', 'ravs_add_menu_parent_class' );
function ravs_add_menu_parent_class( $items ) {
$animals = array (
'title' => 'Animals',
'menu_item_parent' => 0,
'ID' => 999999999999876, //an unlikely, high number
'db_id' => 999999999999876, //an unlikely, high number
'url' => 'www.google.com?s=animals'
);
$items[] = (object) $animals;
$cats = array (
'title' => 'Cats',
'menu_item_parent' => 999999999999876,
'ID' => '',
'db_id' => '',
'url' => 'www.google.com/?s=cats'
);
$items[] = (object) $cats ;
return $items;
}