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

使用投票数排序后新自定义文章不显示的问题求助

问题分析与解决方案

你的问题主要出在两个关键细节上:错误的文章状态参数和未纳入无投票记录的新文章,下面一步步帮你解决:

1. 修正post_status参数错误

WordPress中已发布文章的标准状态值是publish,而不是你代码里的published——这个小错误会直接过滤掉所有新发布的正常文章,因为它们的状态标记是publish,完全不匹配你的查询条件。

2. 让查询包含无投票记录的新文章

新发布的自定义文章还没有收到任何投票,所以不会生成_liked这个元键。默认情况下,使用meta_key => '_liked'和orderby => 'meta_value_num'的查询,只会返回存在该元键的文章,这就是新文章不显示的核心原因。

我们需要调整meta_query,让它同时包含**有投票记录(存在_liked元键)和无投票记录(不存在_liked元键)**的文章,同时保留你原有的sponsored过滤规则。

修正后的完整代码

$args = array(
    'post_type'      => 'ico',
    'post_status'    => 'publish', // 修正为正确的已发布状态值
    'orderby'        => 'meta_value_num',
    'meta_key'       => '_liked',
    'order'          => 'DESC', // 可选:按点赞数从高到低排序,贴合"最受欢迎"需求
    'posts_per_page' => -1,
    'meta_query'     => array(
        'relation' => 'AND', // 确保sponsored条件与投票记录条件同时生效
        array(
            'key'     => 'sponsored',
            'value'   => '0',
            'compare' => '=='
        ),
        array(
            'relation' => 'OR', // 同时包含有投票和无投票的文章
            array(
                'key'     => '_liked',
                'compare' => 'EXISTS',
                'type'    => 'NUMERIC' // 确保按数字类型排序,避免字符串排序误差
            ),
            array(
                'key'     => '_liked',
                'compare' => 'NOT EXISTS'
            )
        )
    )
);

额外说明

  • 加上type => 'NUMERIC'是为了确保WP ULike存储的点赞数被当作数字处理,避免出现字符串排序的逻辑错误(比如"10"排在"2"前面的情况)。
  • 无投票记录的新文章会被默认视为点赞数为0,自动排在所有有投票的文章之后,符合正常的排序逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:13:50