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

如何通过WordPress REST API获取文章列表并置顶粘性文章?

解决WordPress REST API粘性文章不置顶的问题

问题原因

WordPress REST API的/wp/v2/posts端点默认不支持orderby=sticky参数,直接使用会返回参数无效的错误。而ignore_sticky_posts参数仅用于控制是否排除粘性文章,并非让它们在结果中置顶,因此调整这个参数不会改变排序结果。

解决方案:修改REST查询逻辑

要让粘性文章始终置顶,需要通过钩子修改REST API的文章查询规则,将粘性优先级设为最高。将以下代码添加到主题的functions.php文件或自定义插件中:

add_filter( 'rest_post_query', 'rest_prioritize_sticky_posts', 10, 2 );
function rest_prioritize_sticky_posts( $args, $request ) {
    // 仅在未指定自定义排序或默认按日期排序时生效
    if ( ! isset( $request['orderby'] ) || $request['orderby'] === 'date' ) {
        $args['orderby'] = 'sticky date';
        $args['order'] = 'DESC';
    }
    return $args;
}

这段代码的作用是:通过rest_post_query过滤器拦截REST的文章查询请求,当用户没有指定自定义排序规则,或者使用默认的日期排序时,将查询的排序规则改为先按粘性状态排序,再按日期排序,这样粘性文章会自动排在所有非粘性文章的前面。

验证效果

添加代码后,直接请求wp-json/wp/v2/posts即可看到粘性文章置顶。如果需要使用其他自定义排序(比如按标题、修改时间),这段代码不会干扰原有逻辑,仅在默认场景下生效。

内容的提问来源于stack exchange,提问作者richard

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 11:32:02