WP_Query — показать одно случайное сообщение, а затем еще три случайных сообщения без повторения первого

#wordpress #random

#wordpress #Случайный

Вопрос:

Я делаю это, используя два WP_Queries . В первом я получаю одно сообщение, беру его идентификатор и использую его в качестве параметра исключения для следующего WP_Query lopp. Проблема в том, что я снова получаю исключенное сообщение, повторяясь во втором цикле. Мне действительно просто нужно показать избранное изображение и выдержку для первого элемента, а затем просто плитку для следующих трех (если у вас есть какие-либо предложения сделать все внутри того же WP_Query, пожалуйста, не стесняйтесь, скажите мне). Большое спасибо.

 <div class="posts-by-cat">

<?php 

$args = array(
    'cat'                 => 34,
    'posts_per_page' => 1,
    'orderby' => 'rand',
);
$catquery = new WP_Query( $args );

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

?>

<div class="featured-image">
<?php if ( has_post_thumbnail() ) {
    the_post_thumbnail();
   
} 
?>
</div>
<h3><a href="<?php the_permalink() ?>" rel="bookmark"><?php the_title(); ?></a></h3>
<p><?php the_excerpt(); ?></p>
<?php endwhile; ?> 

<?php 

$exclude = get_the_ID(); 

$args = array(
    'cat'                 => 34,
    'posts_per_page' => 3,
    'orderby' => 'rand',
'exclude' => $exclude
);
$catquery = new WP_Query( $args );

// $catquery = new WP_Query( 'cat=34amp;posts_per_page=3amp;offset=1 ); 
?>

<ul class="postsbytag-listitem">
<?php while($catquery->have_posts()) : $catquery->the_post(); ?>
<li>
<h3><a href="<?php the_permalink() ?>" rel="bookmark"><?php the_title(); ?></a></h3>
<!-- p><?php the_excerpt(); ?></p -->
</li>
<?php endwhile; ?> 
<?php wp_reset_postdata(); ?>
<ul>
</div>
  

Ответ №1:

Это должно выполнить работу:

 <?php

$exclude = array();

?>


<div class="posts-by-cat">

<?php 

$args = array(
    'cat'                 => 34,
    'posts_per_page' => 1,
    'orderby' => 'rand',
);
$catquery = new WP_Query( $args );

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

?>

<div class="featured-image">
<?php if ( has_post_thumbnail() ) {

    // add post id to exclude array (needs to be in the first loop)
    $exclude[] = get_the_ID();

    the_post_thumbnail();
   
} 
?>
</div>
<h3><a href="<?php the_permalink() ?>" rel="bookmark"><?php the_title(); ?></a></h3>
<p><?php the_excerpt(); ?></p>
<?php endwhile; ?> 

<?php 

$args = array(
    'cat'                 => 34,
    'posts_per_page' => 3,
    'orderby' => 'rand',
'post__not_in' => $exclude
);
$catquery = new WP_Query( $args );

// $catquery = new WP_Query( 'cat=34amp;posts_per_page=3amp;offset=1 ); 
?>

<ul class="postsbytag-listitem">
<?php while($catquery->have_posts()) : $catquery->the_post(); ?>
<li>
<h3><a href="<?php the_permalink() ?>" rel="bookmark"><?php the_title(); ?></a></h3>
<!-- p><?php the_excerpt(); ?></p -->
</li>
<?php endwhile; ?> 
<?php wp_reset_postdata(); ?>
<ul>
</div>