2017-12-04 11 views
0

2つの列にカテゴリのリストを取得しようとしています。各カテゴリには、ACFで作成されたカスタムフィールド(「カラー」)があります。これまでのところは良い、私はこのコードを使用して、単一の列にリストを取得することができます。カテゴリを2つの列に分割する(Wordpress)

<?php 
      $args = array('hide_empty' => '0'); 
      $categories = get_categories($args); 
      if($categories){ 
      echo '<div class="col"><ul class="cat-list">'; 
      foreach($categories as $category) { 
       $color = get_field('color', 'category_'.$category->term_id); 
       echo '<li style="background-color:'.$color.'">'; 
       echo '<a href="'; 
       echo esc_url(get_category_link($category->term_id)); 
       echo '">'; 
       echo $category->name; 
       echo '</a>'; 
       echo '</li>'; 
      } 
      echo '</ul></div>'; 
      }  
      ?> 

今私はwp_list_categories(:https://wpsquare.com/display-wordpress-categories-two-columns/先端)を使用してリストを取得しようとしています。これは、2つの列の問題の解決策として動作しますが、このメソッドでは、カテゴリのカスタムフィールドから値を取得できません。

ありがとうございます。

答えて

1

$categoriesは配列です。配列でできることの一つは、あなたがそれらの中にどれだけのアイテムを持っているかを見て、単純なfor-loopを使って繰り返します。

<?php 
    $args = array('hide_empty' => '0'); 
    $categories = get_categories($args); 
    if(!empty($categories)) { 
    $last_category_nr = count($categories) - 1; 
    $last_in_first_column = ceil($last_category_nr/2); 
?> 
    <div class="col"> 
     <ul class="cat-list"> 
     <?php 
     for ($i = 0; $i <= $last_in_first_column; $i++) { 
      $category = $categories[$i]; 
      $color = get_field('color', $category); 
      $link = esc_url(get_category_link($category->term_id)); 
      $name = $category->name; 
     ?> 
     <li style="background-color: <?php echo $color; ?>"> 
      <a href="<?php echo $link; ?>"> 
      <?php echo $name; ?> 
      </a> 
     </li> 
     <?php 
     } 
     ?> 
     </ul> 
    </div> 
    <div class="col"> 
     <ul class="cat-list"> 
     <?php 
     for ($i = $last_in_first_column + 1; $i <= $last_category_nr; $i++) { 
      $category = $categories[$i]; 
      $color = get_field('color', $category); 
      $link = esc_url(get_category_link($category->term_id)); 
      $name = $category->name; 
     ?> 
     <li style="background-color: <?php echo $color; ?>"> 
      <a href="<?php echo $link; ?>"> 
      <?php echo $name; ?> 
      </a> 
     </li> 
     <?php 
     } 
     ?> 
     </ul> 
    </div> 
    }  
?> 
関連する問題