如何实现随机返回自定义文章类型的最新文章?
如何实现随机返回自定义文章类型的最新文章?
你当前代码的问题在于orderby设为rand会直接让数据库随机返回所有符合条件的文章,完全忽略发布时间排序,和你要的「从最新文章里随机选」逻辑冲突,而且代码里的post_date => 'DESC'是无效参数,WordPress查询不识别这个写法。
正确的思路是:先筛选出最新的一批符合条件的文章,再从这批文章里随机挑选1篇。具体修改如下:
// 第一步:获取最新的10篇符合条件的文章(数量可按需调整) $args2 = array( 'post_type' => array( 'cme-education', 'post', 'media_gallery', 'learning-zone' ), 'posts_per_page' => 10, // 取最新的10篇,范围越大随机选择面越广 'post__not_in' => $clicked_activities_array, 'orderby' => 'post_date', // 按发布时间排序 'order' => 'DESC', // 倒序,最新的在前 'tax_query' => array( array( 'taxonomy' => 'vocabulary_1', 'field' => 'term_id', 'terms' => array(2, 21) ) ) ); $latest_posts = get_posts($args2); // 第二步:从最新文章集合里随机选1篇 $random_latest_post = null; if (!empty($latest_posts)) { $random_latest_post = $latest_posts[array_rand($latest_posts)]; }
这样既保证了选取的是最新发布的文章范围内的内容,又实现了随机返回的需求。如果直接用orderby => rand,数据库会遍历所有符合条件的文章再随机返回,不仅无法保证时效性,数据量大时还会影响查询性能。
内容的提问来源于stack exchange,提问作者Raj
相关产品推荐
相关产品推荐

