我想获取帖子类型为“广告”的随机帖子的 ID 并将其添加到数组中。该数组需要跟踪它迭代的所有帖子的 ID。
我需要获取一个随机的“广告”,获取其 ID 并将其添加到数组中。然而,数组在每个循环上都会被覆盖,我不明白为什么。
$allPosts = array();
$args = array( 'post_type' => 'Advertisement',
'posts_per_page' => 1,
'orderby' => 'rand');
$loop = new WP_Query( $args );
while ( $loop->have_posts() ) : $loop->the_post();
array_push($allPosts, get_the_ID());
endwhile;
foreach($allPosts as $p) {
echo($p);
}
如果您想在重新加载页面时获得不同的帖子,您需要保存数据库中已显示的帖子列表。例如可以这样实现:
$post_type = 'Advertisement';
$option_name = 'advertisement_list';
$getAllPosts = get_option($option_name);
$allPosts = empty($getAllPosts) ? [] : $getAllPosts;
$args = [
'post__not_in' => $allPosts,
'post_type' => $post_type,
'posts_per_page' => 1,
'orderby' => 'rand'
];
$loop = new WP_Query( $args );
if($loop->have_posts()) {
while ( $loop->have_posts() ) : $loop->the_post();
array_push( $allPosts, get_the_ID() );
echo get_the_ID();
endwhile;
}
wp_reset_postdata();
$total_posts = wp_count_posts($post_type)->publish;
if(count($allPosts) == $total_posts){
delete_option($option_name);
} else {
update_option($option_name, $allPosts);
}