我正在使用下面的自定义查询按自定义视图计数查询最受欢迎的帖子,
<?php
$mostpopular_args=array(
\'post_type\' => \'post\',
\'orderby\' => \'meta_value_num\',
\'meta_key\' => \'view_count\',
\'posts_per_page\' => 2,
);
<?php $mostpopular_pick = new WP_Query($mostpopular_args); ?>
?>
然而,这是行不通的。根据专家的建议,我跑了
$mostpopular_pick->request
wordpress似乎是通过“menu\\u order”而不是meta\\u value\\u num来排序帖子。下面是它返回的结果,
SELECT SQL_CALC_FOUND_ROWS wp_posts.ID
FROM wp_posts
INNER JOIN wp_postmeta ON (wp_posts.ID = wp_postmeta.post_id)
WHERE 1=1
AND wp_posts.post_type = \'post\'
AND (wp_posts.post_status = \'publish\'
OR wp_posts.post_status = \'private\')
AND (wp_postmeta.meta_key = \'view_count\')
GROUP BY wp_posts.ID
ORDER BY wp_posts.menu_order,
wp_postmeta.meta_value DESC LIMIT 0,
2
而且,虽然我将帖子数量限制为2篇,但它仍然返回了4篇帖子。
怎么了,有什么想法吗?
最合适的回答,由SO网友:Pieter Goosen 整理而成
您的代码在理论上应该可以工作。您的失败不是由问题中的代码造成的,而是由外部因素造成的。其他原因导致了此故障
调试此问题打开调试并检查是否存在明显的错误和警告。这应该可以很好地指示特定页面上所有代码的可靠性
清除所有缓存,不仅仅是浏览器缓存,还清除任何缓存插件
禁用所有插件并切换到捆绑主题。检查错误是否持续存在。逐个重新启用插件,然后进行测试。如果插件导致了您的问题,这应该会给您一个指示。最后,重新启用主题。到目前为止,您应该已经清楚地知道您的问题来自何处。
关于帖子数量和差异,请检查是否存在粘滞。
SO网友:Jambul Jakhaia
我已经检查过了,效果很好。检查meta\\u键或检查自定义循环(如果在此之前在其他地方使用),并重置其post数据
<?php $array = array(
\'post_type\'=>\'post\',
\'posts_per_page\'=>4,
\'order\'=>\'DESC\',
\'orderby\'=>\'meta_value_num\',
\'meta_key\'=>\'_count-views_all\');
$the_query = new WP_Query($array);
if ( $the_query->have_posts() ) {
while ( $the_query->have_posts() ) {
$the_query->the_post();
//Post loop started
}}
?>