按自定义字段(完成)的Wordpress类别顺序。如何只输出一次自定义字段

问题描述 投票:2回答:1

我使用Wordpress类别按城市创建公司目录。类别是城市。自定义字段是包含城市的区域。对于使用的自定义字段 - Advanced Custom Fields用于构建自定义taxanomy订单使用 - WP Term Order

$terms = get_terms( 'catalog_categories', array(
    'depth'      => 1,
    'number'     => 100,
    'parent'     => 0,
    'orderby'    => 'taxon_name', // order array name
    'order'      => 'DESC',
    'hide_empty' => false,
    'meta_query' => array(
        'taxon_name' => array(
            'key' => 'taxon' // acf custom field name
        ) )
) );

foreach ($terms as $key => $object) {
    $region = get_field('taxon', $object);
    echo $region . ' ' . $object->name . '<br>';
}

我收到: 大波兰波兹南 Wielkopolska Bojanowo Mazowieckie华沙 Dolnoslaskie弗罗茨瓦夫 Dolnoslaskie Jawor

但我需要: 大 - 波兹南 - Bojanowo Mazoweckie - 华沙 下西里西亚 - 弗罗茨瓦夫 - Jawor

请帮忙解决这个问题 UPDATE *帮助请在Wordpress类别中添加一个链接(slug)到代码这里我们收集一个地区的所有城市: $ collection [$ region] [] = $ object-> name; 我们需要向每个城市添加一个slu .. $对象 - >塞; 我们需要使用它作为期权的价值。

'<option value="' . **SLUG** . '" data-select2-id="'. $data_select_id . '-' .$i .'">' . $city . '</option>';

更新: *工作代码 我们添加到 - $ collection [$ region] [] = $ object-> name; - $ object-> slug并将它们组合成一个数组 $ collection [$ region] [] = array('name'=> $ object-> name,'slug'=> $ object-> slug); 对于我们使用的输出 - $ city ['name']和$ city ['slug']

<?php
$terms = get_terms( 'catalog_categories', array(
    'depth'      => 1,
    'number'     => 100,
    'parent'     => 0,
    'orderby'    => 'taxon_name', // order array name
    'order'      => 'DESC',
    'hide_empty' => false,
    'meta_query' => array(
        'taxon_name' => array(
            'key' => 'taxon' // acf custom field name
        ) )
) );

$collection = [];
foreach ($terms as $key => $object) {
    $region = get_field('taxon', $object);

    if (!isset($collection[$region])) {
        $collection[$region] = [];
    }

    $collection[$region][] = array('name' => $object->name, 'slug' => $object->slug);
}

$data_select_id = 1;
echo '<div>';
    foreach ($collection as $region => $cities) {

        $i = 0;

        echo '<div label="' . $region . '" data-select2-id="' . $data_select_id . '">'. $region;
            foreach ($cities as $city) {
                $i++;
                echo '<option value="' . $city['slug'] . '" data-select2-id="'. $data_select_id . '-' .$i .'">' . $city['name'] . '</option>';
            }
        echo '</div>'; 

        $data_select_id ++;

    }
echo '</div>'; 
;?>
php wordpress categories advanced-custom-fields
1个回答
2
投票

您可以使用其他数组将城市分类到以下区域:

$collection = [];
foreach ($terms as $key => $object) {
    $region = get_field('taxon', $object);

    if (!isset($collection[$region])) {
        $collection[$region] = [];
    }

    $collection[$region][] = $object->name;
}

foreach ($collection as $region => $cities) {
    echo $region . '<br/>';
    foreach ($cities as $city) {
        echo '--' . $city . '<br/>';
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.