avgustov
@avgustov

Как вывести в таблице записи только одной категории?

Всем добрый день, создал кастомный тип записи (каталог) и в нем через acf добавил заполняемые значения и рубрики.
Для этих записей сделал шаблон с выводом их в таблицу, и по задумке в ней должны показываться только из одной рубрики:
<div class="container">
<?php
$the_query = new WP_Query( array(
    'posts_per_page' => 99,
    'post_type' => 'catalog',
    'category' => 1
) );
echo '<table>';
echo '<thead>';
echo '<tr>';
    echo '<th>Название</th>';
    echo '<th>Цвет</th>';
    echo '<th>Договор</th>';
    echo '<th>Базовая цена</th>';
    echo '<th>Партия</th>';
    echo '<th>Оптовая цена</th>';
    echo '<th>С картой партнёра"</th>';
    echo '<th>Гарантийный срок</th>';
echo '</tr>';
echo '</thead>';
while( $the_query->have_posts() ): $the_query->the_post();
if (get_field('price-add',$post->ID) != ""){
echo '<tr>';
    echo '<td>' . get_the_title() . '</td>';
    echo '<td>' . get_field('color',$post->ID) . '</td>';
    echo '<td>' . get_field('contract',$post->ID) . ' руб.</td>';
    echo '<td>' . get_field('base,$post->ID) . ' руб.</td>';
    echo '<td>' . get_field('batch',$post->ID) . ' руб.</td>';
    echo '<td>' . get_field('price-50-to-100',$post->ID) . ' руб.</td>';
    echo '<td>' . get_field('card',$post->ID) . ' руб.</td>';
    echo '<td>' . get_field('warranty',$post->ID) . ' руб.</td>';
echo '</tr>';
}
endwhile;
echo '</table>';
?>

Но выводятся все равно все записи в таблицу, Просьба подсказать решение как это сделать или направить в нужную сторону где посмотреть
  • Вопрос задан
  • 84 просмотра
Решения вопроса 1
avgustov
@avgustov Автор вопроса
Получилось вот такое замечательное решения, данный вариант выводит все записи, при этом сразу разбивает все записи по рубрикам и их названием перед таблицей
результат

<?php
  $args = array(
    'taxonomy' => 'category',
    'hide_empty' => true, 
    'exclude' => [1,],  // исключаем рубрики которые не нужны (1 - без рубрики)
  );
  $terms = get_terms( $args );
  if ( $terms ) {
    foreach( $terms as $term ) {
      $args =  array(
        'posts_per_page' => 9,  // количество записей на странице
        'post_type' => 'catalog',  // указываем нужный слаг посттайпа
        'post_status' => 'publish', // только опубликованные записи
        'tax_query' => array(
          array(
            'taxonomy' => 'category',
            'field'    => '100',
            'terms'    => $term->term_id
          )
        )
      );
      $query = new WP_Query( $args );
      if ( $query->have_posts() ) {
        echo '<div class="row">
                <div class="col"><h2>' . $term->name . '</h2></div> // Название рубрики
        </div>
           echo '<table>';
        echo '<thead>';
        echo '<tr >';
            echo '<th>Название</th>';
            echo '<th>Характеристика</th>';
           ......
        echo '</tr>';
        echo '</thead>';
        while ( $query->have_posts() ) {
          $query->the_post();
          echo '<tbody>';
          echo '<tr>';
            echo '<td>'. get_the_title() . '</td>'; // Заголовок поста
            echo '<td>' . get_field('film_color',$post->ID) . '</td>'; // вывод нужного поля ACF
           ......
          echo '</tr>';
          echo '</tbody>';
        }
echo '</table>';
      } else {
       }
    }
  }
  ?>

Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы