按元值排序帖子 - wordpress
Order posts by meta value - wordpress
我有一个元键和值,用于跟踪喜欢 post 的人。但是,如果 post 没有喜欢它,它就没有元键或值。因此,我的 WP 查询是:
$args = array(
'post_type' => 'post',
'meta_key' => '_post_like_count',
'orderby' => 'meta_value_num',
'order' => 'DESC',
'posts_per_page' => 3
);
$pop_posts = new WP_Query( $args );
上面的查询没有返回正确的结果。
我已经尝试了以下 $args 的排列,但仍然不满意:
$args = array(
'post_type' => 'post',
'meta_query' => array(
'relation' => 'OR',
array(
'key' => '_post_like_count',
'compare' => 'EXISTS',
),
),
'meta_key' => '_post_like_count',
'orderby' => 'meta_value_num',
'order' => 'DESC',
posts_per_page' => '3',
);
上面的两个 $args 都会返回结果——只是不是点赞最多的 post 的结果。
有人可以帮忙吗?
我在元查询上花费了很长时间,这通常会使事情变得复杂。
我的建议是通过 $wpdb 直接连接到数据库,这样会容易得多。以此为起点:
global $wpdb;
$posts_with_most_likes = $wpdb->get_results(
"
SELECT _post_like_count
FROM $wpdb->postmeta
ORDER BY meta_value_num
"
);
谢谢 Loai Nagati。我将您的答案修改为以下内容,效果很好。
$posts_with_most_likes = $wpdb->get_results(
"
SELECT post_id
FROM $wpdb->postmeta
WHERE meta_key = '_post_like_count'
ORDER BY meta_value DESC
LIMIT 3
"
);
再次感谢!
我有一个元键和值,用于跟踪喜欢 post 的人。但是,如果 post 没有喜欢它,它就没有元键或值。因此,我的 WP 查询是:
$args = array(
'post_type' => 'post',
'meta_key' => '_post_like_count',
'orderby' => 'meta_value_num',
'order' => 'DESC',
'posts_per_page' => 3
);
$pop_posts = new WP_Query( $args );
上面的查询没有返回正确的结果。
我已经尝试了以下 $args 的排列,但仍然不满意:
$args = array(
'post_type' => 'post',
'meta_query' => array(
'relation' => 'OR',
array(
'key' => '_post_like_count',
'compare' => 'EXISTS',
),
),
'meta_key' => '_post_like_count',
'orderby' => 'meta_value_num',
'order' => 'DESC',
posts_per_page' => '3',
);
上面的两个 $args 都会返回结果——只是不是点赞最多的 post 的结果。
有人可以帮忙吗?
我在元查询上花费了很长时间,这通常会使事情变得复杂。
我的建议是通过 $wpdb 直接连接到数据库,这样会容易得多。以此为起点:
global $wpdb;
$posts_with_most_likes = $wpdb->get_results(
"
SELECT _post_like_count
FROM $wpdb->postmeta
ORDER BY meta_value_num
"
);
谢谢 Loai Nagati。我将您的答案修改为以下内容,效果很好。
$posts_with_most_likes = $wpdb->get_results(
"
SELECT post_id
FROM $wpdb->postmeta
WHERE meta_key = '_post_like_count'
ORDER BY meta_value DESC
LIMIT 3
"
);
再次感谢!