WordPress使用Post Views Counter按浏览量排序文章无结果如何解决?
WordPress每日文章查询无结果修复方案
核心问题排查
- 代码中
post_status数组键末尾多了多余空格,导致WordPress无法正确识别发布状态筛选规则,查询逻辑失效 - 仅使用
day参数筛选日期,未传递year和monthnum参数,会匹配所有年份、所有月份对应日期的文章,筛选范围完全不符合预期 - Post Views Counter插件默认存储浏览量的自定义字段名为
pvc_views,你使用的post_views_count为非默认配置,如果你没有手动修改过插件的字段存储规则,该字段不存在会导致查询无返回 - 直接指定
meta_key参数会自动过滤没有对应自定义字段的文章,新发布未产生浏览量的文章会被排除出查询结果 - 需求是展示当日文章,但代码中使用
strtotime("yesterday")查询昨日内容,逻辑不匹配,如果确实需要展示昨日内容可忽略该问题
修正后的代码
function DisplayDailyNews(){ // 如果需要查询当日,将yesterday改为today即可 $target_date = strtotime("yesterday"); $dailyGridPostQuery = new WP_Query(array( "post_type" => "post", "post_status" => "publish", "posts_per_page" => 3, "year" => date("Y", $target_date), "monthnum" => date("n", $target_date), "day" => date("j", $target_date), "meta_key" => "pvc_views", // 确认自己的存储字段,自定义过就改成post_views_count "orderby" => "meta_value_num", "order" => "DESC", // 可选配置:包含没有浏览量的文章,不会过滤新文章 "meta_query" => array( "relation" => "OR", array( "key" => "pvc_views", "compare" => "EXISTS", ), array( "key" => "pvc_views", "compare" => "NOT EXISTS", "value" => 0 ) ) )); if ($dailyGridPostQuery->have_posts()){ while ($dailyGridPostQuery->have_posts()){ $dailyGridPostQuery->the_post(); // 文章展示逻辑写在这里 } // 重置主循环数据,避免影响后续查询 wp_reset_postdata(); } }
内容的提问来源于stack exchange,提问作者user13728122
相关产品推荐
相关产品推荐

