2017-12-30 42 views
2

메인 메뉴와 다른 메뉴를 두 번째 메뉴로 저장했습니다. 두 번째 메뉴의 항목을 하위 메뉴 'shop'의 주 메뉴에 추가하여 (물론 기존 항목을 제거하여) 주 메뉴의 내용을 프로그래밍 방식으로 업데이트하려고합니다. 몇 가지 '두 번째 메뉴'가있을 것이며 내용은 여기서는 흥미롭지 않은 논리에 따라 바뀔 것입니다.메인 메뉴의 서브 메뉴 내용 변경

다음 코드가 깨진 메뉴 항목이 생성됩니다 작동하지 않습니다 : 내가 잘못 뭐하는 거지

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

자바 스크립트로 해보십시오. – Amin

+0

WordPress 개발 질문을위한 사이트가 있습니다 : http://wordpress.stackexchange.com – mmm

+0

자바 스크립트에서 이것을 수행하는 방법? 감사. – 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); 
}