对于$wpdb的工作方式,您的函数中似乎存在一些误解。
但是,我也不明白“client\\u id”列中到底是什么。是Wordpress的用户ID吗?
在任何情况下,请注意您的功能中的以下技术错误。
1: $wpdb->prefix返回在任何wordpress表中使用的前缀(如果未更改:“wp\\u”。如果您的表仅命名为“group\\u client\\u ID”,则无需将$wpdb->prefix放在前面。此外,如果您的表被调用,例如“wp\\u group\\u client\\u ID”,则SQL语句将错误,因为前缀与表名(“group\\u client\\u ID”)的“rest”之间存在空格
2: 您可以为$wpdb->get\\u results提供第二个参数,但此参数用于要返回的结果类型。您可以输入“OBJECT”,这将导致返回一个对象,也可以输入“ARRAY\\u A”/“ARRAY\\N”,这将导致返回一个(关联/数字索引)数组。我不太清楚你为什么把$用户放在那里,但这肯定不是它的工作方式。
3: 如果我理解正确,那么列client\\u ID就有wordpress用户ID,如果它们在组ID为1、2、5或6的行中,则应删除这些用户的元“terms\\u and\\u conditions”。那么,为什么要通过角色获取用户,为什么要使用foreach?这对我来说没有意义。
4: 如果我的上述假设是正确的,您可以通过一个简单的步骤来完成。警告:以下代码将从wordpress用户中删除meta\\u键“terms\\u and\\u conditions”,这些用户的用户ID位于“group\\u client\\u ID”表中,组ID为1、2、5或6。如果这不是预期的结果,不要使用它!
function say_goodby_to_the_meta(){
global $wpdb;
$deleted = $wpdb->query($wpdb->prepare("DELETE FROM $wpdb->usermeta WHERE meta_key=%s AND user_id IN (SELECT client_id FROM group_client_ID WHERE group_ID IN (1,2,5,6))",\'terms_and_conditions\'));
if($deleted === false){
//There was an error in the query. Try Replacing "DELETE" with "SELECT" and checking the resulting Error in PHPMyAdmin
} else {
echo \'The Terms and Conditions Meta Key was deleted for \'.$deleted.\' Users.\';
}
}