Bunun ağır olduğunu sanıyorum, ancak asıl sorunuzu yanıtlamak için, ilk mesajdaki bir dizideki tüm yazı kimliklerini topladım ve bir yazı kimliği dizisi bekleyen 'post__not_in' komutunu kullanarak bu mesajları ikinci döngüden çıkardım.
<?php
$args1 = array('category_name' => 'test-cat-1', 'order' => 'ASC');
$q1 = new WP_query($args);
if($q1->have_posts()) :
$firstPosts = array();
while($q1->have_posts()) : $q1->the_post();
$firstPosts[] = $post->ID; // add post id to array
echo '<div class="item">';
echo "<h2>" . get_the_title() . "</h2>";
echo "</div>";
endwhile;
endif;
/****************************************************************************/
// array of post id's collected in first loop, can now be used as value for the 'post__not_in' parameter in second loops query $args
$args2 = array('post__not_in' => $firstPosts, 'order' => 'ASC' );
$q2 = new WP_query($args2);
if($q2->have_posts()) :
while($q2->have_posts()) : $q2->the_post();
echo '<div class="item">';
echo "<h2>" . get_the_title() . "</h2>";
echo "</div>";
endwhile;
endif;
?>
İlk döngü bir kategorideki tüm gönderileri görüntüler ve gönderim kimliklerini bir dizide toplar.
İkinci döngü, ilk döngüdeki gönderiler hariç tüm gönderileri görüntüler.