1

我有一个工作的 wordpress 循环,它显示某个meta_query值的所有帖子。唯一的问题是这些值是重复的。例如,如果我有两个值为“Blue”的帖子,那么两个帖子都会出现在循环中,这会使“Blue”出现两次。

我希望“蓝色”出现一次,并在其下方显示具有该值的所有帖子标题的列表。

这是我当前的查询:

<?php 
$the_query = new WP_Query(array(
    'post_type'     => 'post',
    'post_status'   => 'publish',
    'meta_key'      => 'colors',
));

while ( $the_query->have_posts() ) : $the_query->the_post(); 

$colors = get_field('colors');

if( $colors ): foreach( $colors as $color ):  
    endforeach;
    endif; 
    echo' <div><h2>'.$color.'</h2><div>'.get_the_title( $post_id ).'</div></div>';

    endwhile; wp_reset_postdata();?>

我尝试使用数组作为标题,但它只返回“Array”

$titles = get_the_title();
$title_names = array();
foreach ($titles as $title){
$title_names[] = get_the_title($id);}

回声$title_names

我在想我需要另一个带有数组的 if 语句?或者,也许我从错误的方向接近这个。

4

1 回答 1

1

你会想尝试这样的事情:

$results = [];
while ( $the_query->have_posts() ) {

    $the_query->the_post(); 
    $colors = get_field('colors');
    if( !empty($colors) ) {

        foreach( $colors as $color ) {  
            $results [$color][]['title'] = get_the_title();
            $results [$color][]['link'] = get_attachment_link();
        }

    }

}

foreach ($results as $color => $posts) {

    echo "<div><h2>{$color}<h2>";

    foreach($posts as $post) {
        echo "<div><a href=\"{$post['link']}">{$post['title']}</a></div>";
    }

    echo '</div>';
}
于 2019-05-31T02:59:59.360 回答