将带有自定义字段的类别列表拆分为两列(Wordpress)

Split categories list with custom field into two columns (Wordpress)

我正在尝试将类别列表分为两列。每个类别都有一个使用 ACF 创建的自定义字段 ("color")。到目前为止一切顺利,我可以使用以下代码在单列中获取列表:

<?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/)。这可以作为两列问题的解决方案,但是使用这种方法我无法从类别自定义字段中检索值。

提前致谢。

$categories 是一个数组。您可以使用数组做的一件很棒的事情是...查看其中有多少项,然后使用简单的 for 循环遍历它们。

<?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>
  }    
?>