0

ナビゲーション領域にカスタム フィールド値を表示するためにループを使用しています。例: ページに 100 件の投稿があります。各投稿には、それに関連付けられたブランド (フェンダー、ギブソンなど) があり、全体で約 15 のブランドがあります。ナビゲーション ループは、投稿のブランド カスタム フィールドの値を出力します。ブランドを 1 回だけ表示して、100 個のブランド値を出力する代わりに、ループが 15 個の一意の値のみを出力し、重複がないようにしたいと考えています。重複を防ぐことについてGoogleが私に示していることはすべて、2番目のループが最初のループから何も重複しないようにすることに関係しています。これは私の問題ではありません。単一のループで出力が重複するのを防ぎたいだけです。何かアドバイス?ありがとうございました。

<?php
$args=array('posts_per_page' => -1, 'post_status' => 'publish', 'orderby'=> 'title',     'order' => 'ASC', 'cat' => get_query_var( 'cat' ) );
$my_query = null;
$my_query = new WP_Query($args);
if( $my_query->have_posts() ) {  ?>


<?php
while ($my_query->have_posts()) : $my_query->the_post();
?>

<h3 style="padding-left:10px;"><a href="<? the_permalink() ?>" title="<? the_title() ?>"><?php 
$key_1_value = get_post_meta( get_the_ID(), 'brand_value', true );
// check if the custom field has a value
if( ! empty( $key_1_value ) ) {
  echo $key_1_value;
} 
?></a></h3>

<?php endwhile; ?>
<?php }
wp_reset_query();
?>
4

1 に答える 1

0

空の配列を作成する

ループで、ブランドをこの配列に追加します。ブランドが配列に既に存在する場合は、それを追加せず、投稿を出力しません。

擬似コード:

$args = array(
    'posts_per_page' => -1,
    'category' => 1,
    'order' => 'ASC',
    'orderby' => 'title'
);

$brand_list = array();
$posts_array = get_posts($args);

foreach( $posts_array as $post ) : setup_postdata($post);
  $brand = get_post_meta( $post->ID, 'brand_value', true);
  if(!in_array($brand,$brand_list){
    array_push($brand_list,$brand);

    echo 'brand: '.$brand;
    the_content();
  }
endforeach;
于 2013-07-08T13:49:36.580 に答える