关于自定义字段流行度的 WordPress 订单查询帖子

Posted

技术标签:

【中文标题】关于自定义字段流行度的 WordPress 订单查询帖子【英文标题】:WordPress order query posts on popularity of a custom field 【发布时间】:2013-08-12 12:07:33 【问题描述】:

我有一个允许用户“喜欢”帖子的 WordPress 网站。这会在包含用户 ID 的帖子中添加一个自定义字段,如下所示:

add_post_meta($post_id, 'like', $user_id, false);

因此,一条帖子最终可能会带有一个带有用户 ID 的 100 个不同的“like”键。

所以我想根据喜欢返回一个最活跃用户的排行榜。因此,我想查询出现最多的 $user_id 的 meta_key 'like'。它看起来像这样。 显然这目前不起作用。

$args = array(
   'post_type' => 'post',
   'meta_key' => 'likes',
   'post_status'       => 'publish',
   'posts_per_page'    => 20,
   'orderby'           => 'popularity', // This doesn't exist yet, but I wants it!      
   'order' => 'ASC',
   'meta_query' => array(
       array(
           'key' => 'likes',
           'value' => $user_id,
           'compare' => '=',
       )
   )
 );
 $query = new WP_Query($args);

这甚至可能吗?或者我最好定期获取所有帖子,将点赞数加起来并缓存结果?

我知道我可以创建一个自定义字段,该字段会随着用户的喜好而递增,但我宁愿提出一个查询来实时获取结果(删除用户等时更强大)。

谢谢, 画了

【问题讨论】:

点赞数会增加价值吗? (即,当一个新的喜欢进来时,它会加起来) 没有喜欢的人加起来。每个赞只是点击赞的人的用户 ID。您必须登录才能查看该页面。 我可能会从 facebook 获得点赞数(见this question)然后orderbymeta_value_num 我的应用与 Facebook 无关。好主意。 【参考方案1】:

以下是使用 SQL 的方法:

SELECT post_id, COUNT(*) AS likes
FROM wp_postmeta
WHERE meta_key='like'
GROUP BY post_id
ORDER BY likes DESC

如果你已经设法使用 WP_Query 解决了这个问题,请告诉我,这就是我在这里所要求的:WordPress Query: Orderby number of matched rows?

【讨论】:

以上是关于关于自定义字段流行度的 WordPress 订单查询帖子的主要内容,如果未能解决你的问题,请参考以下文章

Wordpress ACF 字段如何从自定义帖子类型中获取选项

在 Woocommerce 的管理订单详细信息部分显示自定义结帐字段值

在 Wordpress 自定义帖子类型循环中使用 ACF 分类字段作为变量

自定义 sandbox.paypal “订单汇总”

WordPress 和高级自定义字段管理,仪表板中的自定义列

将自定义数据添加到wordpress客户订单