关于自定义字段流行度的 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)然后orderby
meta_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 分类字段作为变量