0

2つのループがあります。最初のループでは、最新の3つのスティッキー投稿が表示されます。2番目の投稿では、すべての投稿(スティッキーとスティッキーではない)が表示されます。次に、2番目のループで最新の3つのスティッキー投稿を削除します。

このようなことを試しましたが、loop2の一部のスティッキー投稿ではなく、両方のループからすべてのスティッキー投稿が削除されます。//編集:両方のループのコード:

<?php
$sticky = get_option('sticky_posts'); // Get all sticky posts.
rsort($sticky); // Sort sticky posts in reverse order.
$sticky = array_slice($sticky, 0, 3); // Number of sticky posts to show.
$latestStickyPosts = $sticky;

$loop1query = new WP_Query(array('post__in' => $sticky, 'ignore_sticky_posts' => 1));

// START 1ST LOOP.
while ($loop1query->have_posts()) : $loop1query->the_post();
$do_not_duplicate[] = $post->ID; // global. ?>
<div> ... </div>
<?php endwhile;
// END 1ST LOOP.


$showposts = 5; // Show posts per page. 
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$args = array('category__in' => $cat, 'showposts' => $showposts, 'paged' => $paged);

$loop2query = new WP_Query($args);

// START 2ND LOOP.
query_posts($args); if(have_posts()) : while (have_posts()) : the_post(); 
if( in_array($post->ID, $latestStickyPosts ) continue; ?>
<div> ... </div>
<?php endwhile; endif;
// END 2ND LOOP. ?>

投稿がバックエンドで本当に粘着性がないかどうかは気にしません。それらはそのように表示されるべきです:loop1=3つの最新の付箋。loop2=残りの付箋とすべての付箋ではない投稿

助けやアドバイスをありがとう!

4

1 に答える 1

0

コードに最初のループは表示されませんが、2番目の投稿ではすべての投稿をループしているため、再度表示する必要のないスティッキー投稿の3つのIDを配列に保持できます。

配列があるとすると$latestStickyPosts、次のことができます。

query_posts($args); if(have_posts()) : while (have_posts()) : the_post(); 
if (in_array($post->ID, $latestStickyPosts)) continue; ?>

詳細については、このドキュメントを確認してください。

于 2012-12-20T19:38:59.807 に答える