用于检查用户是多少个站点成员的SQL

时间:2015-01-27 作者:John Reid

我有一个多站点安装,我正在创建一个报告插件。我想做的一件事是显示用户所属站点的数量。

现在,我在SQL中使用的是这样的内容:

JOIN `wp_usermeta` m ON m.user_id = u.ID AND ( `meta_key` = \'wp_capabilities\' OR `meta_key` LIKE \'wp_%_capabilities\' )
我不习惯使用% 该语法中的通配符。它可以很容易地选择任何以功能结尾的元值。

除了备选方案外(列出每个站点的AND 在子查询中)-是否有一种方法可以仅选择SQL中的wp\\\\\\\\\\\\U功能?

2 个回复
SO网友:birgire

您只需使用get_blogs_of_user() 功能:

echo count( get_blogs_of_user( $user_ID ) );
而不是自定义SQL查询。

SO网友:John Reid

在试用了birgire的评论(非常感谢)之后,我整理了一个相对简单的正则表达式,它看起来是实心的:

SELECT * FROM wp_usermeta WHERE meta_key REGEXP(\'^wp_([[:digit]]+_)?capabilities$\')
前缀可以在不中断表达式的情况下轻松添加/更改。对于任何多站点比较,它还需要至少1个数字和下划线。对于自定义查询,我可以这样使用它:

SELECT u.ID, u.user_email, u.user_login, COUNT(meta_key)
FROM `wp_users` u
JOIN `wp_usermeta` um ON um.user_id = u.ID AND um.meta_key REGEXP(\'^wp_([[:digit]]+_)?capabilities$\')
GROUP BY u.ID
这显示了一个用户注册了多少个站点,可以在这些站点上构建。

结束

相关推荐

MySQL5.5升级--破解WordPress

我从Debian 6升级到7,在升级过程中,MySQL要求输入新的根密码,我有点困惑,但还是键入了它。我想这会创建一个名为“mysql”的新数据库,因为现在有“wordpress”和“mysql”目录:# ls /var/lib/mysql/ debian-5.1.flag debian-5.5.flag ibdata1 ib_logfile0 ib_logfile1 mysql mysql_upgrade_info performance_schema wordpress