У меня есть рабочий цикл WordPress, который отображает все сообщения определенного значения meta_query
. Единственная проблема заключается в том, что значения повторяются. Например, если у меня есть два сообщения со значением «Синий», то оба сообщения появляются в цикле, что приводит к тому, что «Синий» появляется дважды.
Я бы хотел, чтобы «Синий» появлялся один раз, а под ним список всех заголовков сообщений с этим значением.
Вот мой текущий запрос:
<?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();?>
Я пытался использовать массив для заголовков, но он просто вернул «Массив».
$titles = get_the_title();
$title_names = array();
foreach ($titles as $title){
$title_names[] = get_the_title($id);}
эхо $title_names
Я думаю, мне нужен еще один оператор if где-нибудь с массивом? Или, может быть, я подхожу к этому не с той стороны.
Вы хотели бы попробовать что-то вроде этого:
$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>';
}
Вы можете просто использовать ассоциативный массив, например, как я обновил свой ответ.
Спасибо, по какой-то причине <a>
появляется дважды вместо того, чтобы обтекать заголовок. Выглядит это так: <div><a href = "correct-url"></a><a href = "">Title of Post</a><div>
Не знаю, зачем это делать. Мне нужно увидеть ваш новый код, но это, вероятно, новый вопрос.
Хорошо, спасибо, я создам новый пост. Ценю твою помощь!
Новый пост с ответом здесь: stackoverflow.com/questions/56404224/…
Удивительно! Именно то, что я искал. Если я хочу, чтобы эти заголовки были ссылками, например
<a href = "'.get_attachment_link($id).'">'.$post.'</a>
, мне понадобится другой массив, верно?