2017-12-30 20 views
2

私はメインメニューと別のメニューをセカンドメニューとして保存しています。私はサブメニュー 'shop'のメインメニューに2番目のメニューの項目を追加することで、メインメニューの内容をプログラムで更新したいと思う。いくつかの「2番目のメニュー」があり、ここで興味のないロジックに基づいて内容が変化します。次のコードは動作しませんメインメニューのサブメニューの内容を変更します

、それが壊れたメニュー項目を作成します。

add_filter('wp_nav_menu_items', 'custom_shop_menu', 10, 2); 

function custom_shop_menu($items, $args) { 
    $menu_name = "main-menu"; 
    $menu_obj = get_term_by('name', $menu_name, 'nav_menu'); 
    $menu_id = $menu_obj->term_id; 
    $menu_items = wp_get_nav_menu_items($menu_id); 

    foreach ($menu_items as $menu_item) { 
    if (strtolower($menu_item->title) == "shop") { 
     $submenu_obj = get_term_by('name', "second-menu", 'nav_menu'); 
     $submenu_id = $submenu_obj->term_id; 
     $submenu_items = wp_get_nav_menu_items($submenu_id); 
     foreach ($submenu_items as $submenu_item) { 
     $itemData = array(
      'menu-item-parent-id' => $menu_item->ID, 
      'menu-item-type' => $submenu_item->type, 
      'menu-item-title' => $submenu_item->title, 
      'menu-item-url' => $submenu_item->url, 
      'menu-item-description' => $submenu_item->description, 
      'menu-item-attr-title' => $submenu_item->attr-title, 
      'menu-item-target' => $submenu_item->target, 
      'menu-item-classes' => $submenu_item->classes, 
      'menu-item-xfn' => $submenu_item->xfn, 
      'menu-item-status' => $submenu_item->status 
     ); 
     wp_update_nav_menu_item($menu_id, $submenu_item->db-id, $itemData); 
     } 
     break; 
    } 
    } 
    return $items; 
} 

私が間違っているのか?

+0

どうすればjavascriptでできますか? – Amin

+0

WordPressの開発に関する質問のサイトがあります:http://wordpress.stackexchange.com – mmm

+0

どのようにjavascriptでこれを行うには?ありがとう。 – jahau

答えて

0

タイトルとURLを別のメニューからメインメニューにコピーすることでこれを行いました。このようにして、私はいくつかの「別のメニュー」を維持し、特定のロジック(この場合はget_site_vorigin()に基づく)に基づいてメインメニューの必要な部分(=製品)を更新できます。

add_filter('wp_get_nav_menu_items', 'custom_get_nav_menu_items', 10, 2); 

function custom_get_nav_menu_items($items, $menu, $args) { 
    if($menu->slug != 'main-menu') { // only for main-menu 
    return $items; 
    } 

    $start_replacing = false; 
    $counter = 0; 

    $submenu_items = get_sub_menu_items(get_site_vorigin()); 

    foreach ($items as $item) { 
    if ($start_replacing) { 
     $inner_counter = 0; 
     foreach ($submenu_items as $submenu_item) { 
     if ($inner_counter == $counter) { 
      $item->title = $submenu_item->title; 
      $item->url = $submenu_item->url; 
      $item->description = $submenu_item->description; 
      $item->target = $submenu_item->target; 
     } 
     $inner_counter++; 
     } 
     $counter++; 
    } 
    if (strtolower($item->title) == 'products') { 
     $start_replacing = true; 
    } 
    } 

    return $items; 
} 

function get_sub_menu_items($submenu_name) { 
    $submenu_obj = get_term_by('name', $submenu_name, 'nav_menu'); 
    $submenu_id = $submenu_obj->term_id; 
    return wp_get_nav_menu_items($submenu_obj->term_id); 
} 
関連する問題