我有一个显示合同和位置的循环。
循环并获取合同名称和每行的位置。行中有重复的合约,所以我只想显示一个,然后列出它下面的所有位置。
我知道我可以使用类似array_unique();
的内容删除重复内容但不确定如何将其集成到我的循环中。
如何显示所有独特合约并显示与该合约相关的多个地点?
<?php
// Find all locations tied to the current logged in user.
$args = array(
'posts_per_page' => -1,
'post_type' => 'locations',
'meta_query' => array(
'relation' => 'OR',
array(
'key' => 'regional_operations_manager',
'value' => $user->id,
'compare' => 'LIKE'
),
),
);
// query
$the_query = new WP_Query( $args ); ?>
<?php if( $the_query->have_posts() ):
while( $the_query->have_posts() ) : $the_query->the_post(); ?>
<?php $clients[] = array('contract' => get_field('contract'), 'location' => get_the_title()); ?>
<?php endwhile;
endif;
// Sort them alphabetically and only show unique locations.
//$contracts = array_unique( $contracts );
//sort($contracts);
foreach ( $clients as $key => $row ) { ?>
<?php echo $contract[$key] = $row['contract']; ?><br />
<?php echo $location[$key] = $row['location']; ?><br />
<?php } ?>
这是一些数据:
阿迪达斯 Viables 3 Viables Business
阿尔迪 布里
阿尔迪 彭布罗克码头
阿尔迪 哈佛威斯特
第一个字是合同,其余的是合同。
我想只显示一个“Aldi”,例如位于其下方的位置2,3和4。因此,一份独特的合同可以有多个地点。
答案 0 :(得分:2)
我对wordpress不太流利但确定你可以通过wp_query解决订单部分。无论哪种方式,您都可以像这样构建$clients
数组:
<?php if( $the_query->have_posts() ):
while( $the_query->have_posts() ) : $the_query->the_post(); ?>
<?php $clients[get_field('contract')]['locations'] = []; ?>
<?php array_push($clients[get_field('contract')]['locations'], get_the_title()); ?>
<?php endwhile; ?>
<?php endif; ?>
这将创建$clients
数组,看起来像这样,你可以在它上面...
<?php
$clients['Adidas']['locations'] = [];
array_push($clients['Adidas']['locations'], 'Viables 3 Viables Business');
$clients['Aldi']['locations'] = [];
array_push($clients['Aldi']['locations'], 'Bridgend');
array_push($clients['Aldi']['locations'], 'Pembroke Dock');
array_push($clients['Aldi']['locations'], 'Haverfordwest');
foreach ($clients as $contract => $locations ) {
echo 'Contract: ' . $contract . "\n";
sort($locations['locations']); // this will sort the locations alphabetically
foreach ($locations['locations'] as $location ) {
echo ' - Location: ' . $location . "\n";
}
}
结果如下:
Contract: Adidas
- Location: Viables 3 Viables Business
Contract: Aldi
- Location: Bridgend
- Location: Haverfordwest
- Location: Pembroke Dock