如何通过多重价值正确获取热门帖子

时间:2015-10-28 作者:pukka

我试图在我的网站上显示受欢迎的帖子,这些帖子是由浏览量和评论数混合选择的。因为视图总是远远多于评论,所以我将评论数乘以X,但它似乎没有达到我所希望的效果。查询结果仅按元值“Views”排序。我假设这是因为我需要计算视图+注释计数*X的总和,然后按它排序。。。但我不知道如何通过仅使用get\\u posts()来实现这一点。有人能给我指出正确的方向吗?:)

这是我的密码

$home_top_news = get_posts(
    array(
        \'post_type\' => array(\'post\',\'reviews\'),
        \'post_status\' => \'publish\',
        \'numberposts\' => \'15\',
        \'meta_key\' => \'views\',
        \'orderby\' => array(
            \'meta_value_num\' => \'DESC\',
            \'(comment_count * 10)\' => \'DESC\',
        ),
        \'date_query\' => array(
            array(
                \'after\' => \'12 days ago\'
            )
        )
    )
);

2 个回复
SO网友:Bruno Cantuaria

我相信,仅仅使用WP Query/get\\u posts界面是无法做到这一点的。可能有一种方法可以使用自定义MySQL查询,但您可以尝试另一种方法。因为你有一个自定义元views, 您可以尝试创建新的自定义元popularity, 这将是视图和注释计数的总和。您可以在相同的视图钩住它,并在comment_post 钩之后,只需查询人气元。

SO网友:shadylane

为此,需要使用$wpdb对象。

SQL看起来像这样(完全未经测试,需要添加时间条件)

SELECT ID, post_date, post_title, post_content, (meta_value + (comment_count * 10)) AS rank
FROM $wpdb->posts
INNER JOIN $wpdb->postmeta pm
    ON (ID = pm.post_id AND pm.meta_key = \'views\')
WHERE (post_type = \'post\' OR post_type = \'reviews\')
    AND post_status = \'publish\'
ORDER BY rank DESC
LIMIT 0,15;

相关推荐

如何让`wp-list-table`显示我在Custom-Post中的`Custom-Fields`

一切都好吗<我需要wp-list-table 也要显示custom-fields 在每个custom-post 我有,但我不知道如何做到这一点,在这幅图中,它显示了带有字段的表格:Title, Author and Publication Date: 我想要的是能够选择custom-fields 将出现,例如以下示例Title, Carta, Naipe, Author, and Date of Publication: