当前位置:   article > 正文

mysql 查询帖子 用户,wordpress查询数据库,用于一个查询中的每个用户的帖子计数...

查询每个用户发表的帖子数量,并按照数量降序排列。

我有一个自定义用户角色让我们称之为“用户角色”,只能创建一个自定义帖子类型,让我们在许多类别下调用它 .

我想要得到的是一个页面,每页显示20个用户(将有分页)以及最终信息(它应该只显示发布超过2个帖子的用户):

1)该用户发布的cpt帖子总数

2)该用户发布的第1类和第2类的帖子总数

我尝试使用WordPress get_users函数来获取所有以“user-role”作为角色的作者,然后循环抛出这个找到的用户使用count_many_users_posts()获得每个用户的帖子总数,然后使用新的WP_Query获取具有初始作者ID并且在指定类别中的所有帖子 . 有一个新的foreach throw这个持续的帖子我在计算每个用户发现的帖子数量 .

将解决方案限制为2个用户逻辑似乎有效 .

问题:脚本运行速度太慢,数量或用户非常大(大约3k),因此在另一个循环内运行2个循环对于它来说太慢了 .

我在想的是使用一个自定义查询,我应该将选择的users表内连接到usermeta表用于指定的用户角色,只获取所需角色的用户ID,所有这些查询内部再次与posts表连接哪个只能发布post_type = cpt的帖子,并计算返回的行数 .

如果可能,上面加入了一个查询,该查询将相应地再次过滤term_relationships表的结果,以仅计算类别为1,2的帖子(这应该返回到总帖子数)

我尝试但没有工作(我没有得到任何结果,但我真的不认为我正在使用连接和where子句正确)是:

SELECT $wpdb->users.id, count(*) FROM $wpdb->users

INNER JOIN $wpdb->usermeta on $wpdb->users.id = $wpdb->usermeta.user_id

WHERE $wpdb->usermeta.meta_key = 'wp_capabilities'

AND meta_value RLIKE '[[:<:>:]]'

INNER JOIN $wpdb->posts on $wpdb->users.id = $wpdb->posts.post_author

WHERE $wpdb->posts.post_type = "cpt" AND $wpdb->posts.post_status = "publish"

having count(*)>2

我不知道我与上面的距离有多近,但这是我可以构建的,只计算一个查询中的特定角色用户的所有帖子,然后我想在此添加帖子的计数上面的类别(我可以对类别的条款ID进行硬编码,因此除了$ wpdb-> term_relationships之外,不需要在此计算中获取其他表格)

所以在从上面得到$ ids和count(*)之后,我认为结果应该再次内部加入$ wpdb-> term_relationships,就像这样:

INNER JOIN $wpdb->term_relationships on $wpdb->term_relationships.object_id = $wpdb->posts.id

WHERE term_taxonomy_id IN (1,2)

这就是我提出的,有一个标准的解决方案吗?或者Wordpress数据库和WordPress功能在这一点上是否涵盖了这么大的数据集?

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号