You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现随机返回自定义文章类型的最新文章?

如何实现随机返回自定义文章类型的最新文章?

你当前代码的问题在于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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 15:45:21