1

マルチサイト インストールで wp_update_nav_menu_item 関数を使用すると奇妙な問題が発生します。

wp-admin内からこれを実行すると、通常は機能します。しかし今は、サイトを自動作成し、多数の既定のページを追加し、メニューを追加して、メニューにそれらのページを追加するためのハンドラー スクリプトを作成する任務を負っています。

問題のコードは次のとおりです。

$miid = wp_update_nav_menu_item($menu_id, 0, array(
'menu-item-title' => $post['post_title'],
'menu-item-object' => 'page',
'menu-item-object-id' => $pid,
'menu-item-type' => 'post_type',
'menu-item-status' => 'publish',
'menu-item-parent-id' => $navParentID,
'menu-item-position' => $post['menu_order']));

関数に渡されるすべての値が正しく、wp-admin ダッシュボード内からこの関数を呼び出したときに渡される値と一致することを確認しました。

デフォルトのページやメニューと同様に、ブログが正常に作成されます。これが実行されると$menu_item_db_id、正常に機能したことを示す値が返されますが、実際にはメニューに何も追加されておらず、次のようなものを呼び出してprint_r(wp_get_nav_menu_object($menu_id));も何も返されません。

wp-admin 内のページから同じ正確な入力で同じ正確な関数を呼び出すと、すべて正常に動作します。

現在のブログ コンテキストが正しく設定されていないのではないかと考え、次のスニペットを使用して正しいブログにアクセスしていることを確認しました。

//Ensure we're updating the correct blog
$blogid = get_current_blog_id();
switch_to_blog($blogid);
echo get_current_blog_id()."<br/>"; 

他の誰かがこの問題に遭遇しましたか?

4

1 に答える 1

3

私はまったく同じ問題を抱えていました..解決策は、各アイテムのアイテムとメニューの関係を作成することでした:

wp_set_object_terms($item_id, $menu_id, 'nav_menu');

何らかの理由で作成されませんでしたwp_update_nav_menu_item

于 2013-11-29T13:04:45.877 に答える