2013-05-31 3 views
0

Просто интересно, можно ли изменить этот раздел кода. Сейчас он направляется в базу данных и автоматически присоединяется к пользователю WordPress к группе, если она отмечена галочкой на панели администратора. Вместо группы «foreach», которая была отмечена галочкой, можно ли изменить это так, чтобы из групп, отмеченных галочкой, выберете случайную группу для автоматического объединения?PHP - выберите случайный из SQL-запроса, а не «foreach»

if (!function_exists('update_auto_join_status')) { 
    function update_auto_join_status($user_id) { 
     global $wpdb, $bp; 

     // get list of groups to auto-join. 
     $group_list = $wpdb->get_results("SELECT * FROM {$bp->groups->table_name} WHERE auto_join = 1"); 
     foreach ($group_list as $auto_join_group) { 
      groups_accept_invite($user_id, $auto_join_group->id); 
     } 
     $wpdb->query("UPDATE {$wpdb->users} SET auto_join_complete = 1 WHERE ID = {$user_id}"); 
    } 

    add_action('user_register', 'update_auto_join_status'); 
} 

Я довольно новичок в PHP - с чего бы начать?

Большое спасибо за любую помощь.

ответ

0

Вы можете просто ORDER BY RAND() LIMIT 1 выбрать одну группу в случайном порядке.

$group_list = $wpdb->get_results("SELECT id FROM {$bp->groups->table_name} WHERE auto_join = 1 ORDER BY RAND() LIMIT 1"); 
groups_accept_invite($user_id, $group_list[0]->id); 
+0

Это работает отлично! Спасибо. –

0

Если $group_list является массивом, то вы могли бы получить случайный элемент из списка, как это:

$auto_join_group = $group_list[rand(0, count($group_list)-1)]; 
0

Может быть что-то вроде этого (используйте с осторожностью!):

// change 30 to however many you want to limit from, or remove the limit altogether 
    $group_list = $wpdb->get_results("SELECT * FROM {$bp->groups->table_name} ORDER BY RAND() LIMIT 30"); 

Вы будете необходимо продолжать использовать раздел foreach(), потому что эта функция выглядит так, что добавляет этого пользователя в эту группу.

+0

Opps sorry отредактировал неправильный ответ ... вы можете отклонить мои изменения, хотя я попытался вернуть его так, как я думаю. –