2016-09-08 9 views
1

Wordpressのナビゲーションメニュー項目をCSSクラスと共に出力しようとしています。foreach()ループ内の配列値を取得する

私はメニューアイテムを手に入れることができましたが、クラスはもっと複雑です。 CSSクラスは配列に入っていますが、既にforeach()ループ内にあります。あなたが見ることができるように

$menu_items = wp_get_nav_menu_items($menu->term_id); 

$menu_list = '<ul id="menu-' . $menu_name . '">'; 

foreach ((array) $menu_items as $key => $menu_item) { 
    $title = $menu_item->title; 
    $url = $menu_item->url; 
    $classes = $menu_item->classes; 

    $menu_list .= '<li>'; 
    $menu_list .= '<i class=""></i>'; 
    $menu_list .= '<a href="' . $url . '">' . $title . '</a>'; 
    $menu_list .= '</li>'; 
} 

$menu_list .= '</ul>'; 

foreach()ループ内で私が$titleと両方の文字列である$urlを取得しています。しかし、私は、メニュー項目に関連付けられたCSSクラスを$menu_item->classesで取得しようとすると、配列を返し、どのようにこれを行うのか分かりません。

各メニュー項目は3つのCSSがfa fa-user fa-3xをclasssesたので、私はこの

$classes[0] . $classes[1] . $classes[2] 

を使用して値を返します。しかし、私は第三クラスを望んでいないと私は空のそれを残して、私は行方不明オフセット誤差を取得すると仮定することができます。

私はまた、元のforeach内

$menu_list .= '<li>'; 
foreach($classes as $class) { 
    $menu_list .= '<i class="'. $class .'"></i>'; 
} 
$menu_list .= '<a href="' . $url . '">' . $title . '</a>'; 
$menu_list .= '</li>'; 

をforeachのをやってみました。しかし、これは私が欲しいものではありません各メニュー項目のための3個の別々の<i>タグを返します。出力は、あなたが巣ループ...

foreach(...) { 
    ... html stuff .. 
    echo '<div class="'; 
    foreach($classes as $class) { 
    echo $class, ' '; 
    } 
    echo '">...</div>'; 
} 

答えて

1

は単純にそうような場所では、ネストされたループを使用することができ、この

<i class="fa"></i> 
<i class="fa-user"></i> 
<i class="fa-3x"></i> 
+0

ブリリアント、ありがとうございました。 – Halnex

-1

次のようになります。

<?php 

    $menu_items = wp_get_nav_menu_items($menu->term_id); 

    $menu_list = '<ul id="menu-' . $menu_name . '">'; 

    foreach ((array) $menu_items as $key => $menu_item) { 
     $title  = $menu_item->title; 
     $url  = $menu_item->url; 
     $classes = $menu_item->classes; 
     $comboClass = ""; 

     // USING NESTED LOOP CONSTRUCT 
     foreach($classes as $class){ 
      $comboClass .= $class . " "; // SEPARATE CLASS-NAME WITH A SPACE 
     } 

     $menu_list .= '<li>'; 
     $menu_list .= '<i class="' .$comboClass . '"></i>'; 
     $menu_list .= '<a href="' . $url . '">' . $title . '</a>'; 
     $menu_list .= '</li>'; 
    } 

    $menu_list .= '</ul>'; 
関連する問題