Возможно, я говорю об этом неправильно, но у меня проблема с получением информации вне цикла while:
<?php
$title = get_field('car_list_title');
$field = get_field('tax_field_selector');
$query = new WP_Query( array(
'post_type' => 'cars',
'taxonomy' =>'make',
'term' => $field->name,
'posts_per_page' => -1,
'orderby' =>'title',
'order' =>'ASC'
) );
$taxonomy = get_terms( array(
'taxonomy' => 'location',
'hide_empty' => true
) );
if ( $field || $query->have_posts() ) :
?>
<div class="c-cars">
<h2 class="c-cars_title u-t--underline--lightblue">
<?= $title; ?>
</h2>
<?php foreach( $taxonomy as $tax ) :
$tax_name = $tax->name;
?>
<div class="c-cars_row">
<h4 class="c-cars_location-title">
<?= $tax_name; ?>
</h4>
<div class="c-cars_cars">
<?php while ( $query->have_posts() ) : $query->the_post();
$title = get_the_title();
$link = get_permalink();
$image = get_field('car-picture');
$image_alt = get_field('car_alt');
$image_title = get_field('car_title');
$post_id = get_the_ID();
$terms = get_the_terms( $post_id, 'location', array( 'order' => 'DESC', 'hide_empty' => true));
$location = $terms[0]->name;
?>
<?php if( $location === $tax_name ) : ?>
<div class="c-cars_car">
<a href="<?= $link; ?>">
<img class="c-cars_car-image" src="<?= $image; ?>" alt="<?= $image_alt; ?>" title="<?= $image_title; ?>">
</a>
<h4 class="text-center">
<a href="<?= $link; ?>">
<?= $title; ?>
</a>
</h4>
</div>
<?php endif; ?>
<?php endwhile; wp_reset_postdata(); ?>
</div>
</div>
<?php endforeach; ?>
</div>
<?php endif; ?>
Итак, что здесь происходит, я получаю список мест и всех автомобилей в этих местах:
Местоположение 1:
- Автомобиль
- Автомобиль
- Автомобиль
Местоположение 2:
- Автомобиль
- Автомобиль
- Автомобиль
Местоположение 3:
Местоположение 4:
- Автомобиль
- Автомобиль
- Автомобиль
Проблема, например, в том, что местоположение 3 отображается, хотя его нет "posts "в этом термине.
Цикл while - это только автомобили определенной модели, отсортированные по местоположению.
Я не совсем уверен, как отфильтровать пустые места.
Я делаю:
<?php if( $location === $tax_name ) : ?>
Внутри цикла и отфильтровывает их из локаций, но все равно оставляет заголовок локации, потому что он находится вне цикла while.Если бы я смог сделать это раньше в коде, это могло бы сработать, но я не смогу получить список активных терминов вне цикла while.
Я сейчас немного потерялся.Есть идеи или предложения?Спасибо!