2017-05-01 11 views
0

メニュージェネレータを書き換えてメニューの順序を変更し、その場所を移動する方法を見つけ出しました。これは比較的粗雑です。メニュー内でアクティブなメニュー項目を見つける

しかし、私の問題は、現在のアクティブなオプションの名前またはIDを見つける方法です。

以下の例では、ハードコードされた値($ current_id)を使用して、真ん中に何を配置するのかを識別しますが、現在のページのIDを取得します。

これで終わりではリスト

$menuLocations = get_nav_menu_locations(); // Get our nav locations (set in our theme, usually functions.php) 
               // This returns an array of menu locations ([LOCATION_NAME] = MENU_ID); 

// foreach ($menuLocations as $menuLocation) { 
//  echo '<p style="color: red">',$menuLocation,'</p>'; 

//  } 
//  print_r(array_keys($menuLocations)); 

    $menuID = $menuLocations['primary_navigation']; // Get the *primary* menu ID 
    $primaryNav = wp_get_nav_menu_items($menuID); // Get the array of wp objects, the nav items for our queried location. 

//print_r(array_keys($primaryNav)); 



    $current_id = 5; 
    $menu_length = count($primaryNav); 
    if ('5' == $menu_length){ 
     echo $MenuStart; 
     for ($i = 0 ; $i <=4 ; $i++) { 
      $cu_target = $i + $current_id + 3; 
      if ($cu_target > 5) { 
       $cu_target -= 5; 
      } 
      if ($cu_target > 5) { 
       $cu_target -= 5; 
      } 
      $navItem = $primaryNav[$cu_target - 1]; 
      echo '<li class="MainNavLink',$i,' nav-item">'; 
      echo '<a class="nav-link py-1 pr-3" href="'.$navItem->url.'" title="'.$navItem->title.'">'.$navItem->title.'</a>'; 
      echo '</li>'; 
     } 

答えて

0

の順序を変更するにはコアそれがこの

$thispost = get_post(); 
$menu_order = $thispost->menu_order; 
$current_id = $menu_order; 
if ('0' == $current_id){ 
    $current_id = 1; 
} 

ない、それは最初のページに0を報告し、なぜ特定の周りの比較的簡単な方法があり、そしてあります(少なくとも私がそれを使用しているもののために)命令を入れておく必要がありますが、それ以外の場合はmenu_orderを数値的に返すので、メニューで遊ぶことができます:)

関連する問題