按元值排序帖子 - wordpress

问题描述 投票:0回答:2

我有一个元键和值来跟踪喜欢该帖子的人。但是,如果帖子没有喜欢,则它没有元键或值。我的 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 都返回结果 - 只是不是最喜欢的帖子的结果。

有人可以帮忙吗?

php wordpress
2个回答
1
投票

我花了很长时间进行元查询,它通常会让事情变得复杂。

我的建议是通过 $wpdb 直接连接到数据库,这样更容易。以此为开始:

global $wpdb;
$posts_with_most_likes = $wpdb->get_results(
                "
                SELECT _post_like_count
                FROM $wpdb->postmeta
                ORDER BY meta_value_num
                "
            );

0
投票

谢谢你,洛艾·纳加蒂。我将您的答案修改为以下内容,效果非常好。

$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
    "
);

再次感谢!

© www.soinside.com 2019 - 2024. All rights reserved.