Сортировать cpt сначала по пользовательской таксономии, а затем до конца сообщения - PullRequest
0 голосов
/ 19 января 2020

Я пытаюсь отобразить 3 последних сообщения из вакансий нестандартного типа. Но если есть какие-либо посты со значением «option» пользовательской таксономии, равным «featured», то они должны сначала показываться.

Так, если 2x post помечен как «featured», то сначала они будут показаны, а затем только самый последний пост. В приведенном ниже коде будут отображаться только сообщения с тегом «Избранное», но если будет отмечено только 1 или 2 сообщения, я не получу 3 сообщения.

Любой совет будет высоко оценен. Спасибо.

`$loop_args = array (
'post_type' => 'vacancies',
'posts_per_page' => 3,
'tax_query' => array(
   array(
  'taxonomy' => 'option',
  'field' => 'slug',
  'terms' => 'featured'
 )
 )
);
$custom_loop = new WP_Query( $loop_args );
while ( $custom_loop->have_posts() ) : $custom_loop->the_post();

$intro = get_field( 'vacancy_introduction' );
$area = get_field( 'vacancy_area' );

<?php the_title( '<h2>', '</h2>' );?>
<h3>
  <?php if( $area ): ?>
  <?php echo $area; ?>
  <?php endif; ?>
</h3>
<div>
  <?php if( $intro ): ?>
  <?php echo $intro; ?>
<?php endif; ?>
</div>

<a class="morex" href="<?php echo get_permalink(); ?>"><button><?php _e('Read More', 'tsum'); ?></button></a>

<?php endwhile; wp_reset_query(); ?>`

1 Ответ

0 голосов
/ 20 января 2020

Вы можете просто добавить после своего начального l oop. (после вашего конца)

Но удалите wp_reset_query, чтобы вы могли получить доступ к счетчику.

<?php
$count = $custom_loop->found_posts;
if ($count < 3){
    $show = $count - 3;
    $second_loop = array (
        'post_type' => 'vacancies',
        'posts_per_page' => $show,
        'tax_query' => array(
           array(
              'taxonomy'    => 'option',
              'field'       => 'slug',
              'terms'       => 'featured',
              'operator'    => 'NOT IN',
                )
            )
        );

    $custom2 = new WP_Query($second_loop);

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

    $intro = get_field( 'vacancy_introduction' );
    $area = get_field( 'vacancy_area' ); ?>

    <?php the_title( '<h2>', '</h2>' );?>
    <h3>
      <?php if( $area ): ?>
      <?php echo $area; ?>
      <?php endif; ?>
    </h3>
    <div>
      <?php if( $intro ): ?>
      <?php echo $intro; ?>
    <?php endif; ?>
    </div>

    <a class="morex" href="<?php echo get_permalink(); ?>"><button><?php _e('Read More', 'tsum'); ?></button></a>

    <?php endwhile; wp_reset_query();

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...