0

コードのこのセクションを変更できるかどうか疑問に思っています。現在、それはデータベースに向かい、管理パネルでチェックされている場合、WordPress ユーザーをグループに自動的に参加させます。チェックされた「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 にまったく慣れていません。どこから始めればよいでしょうか。

助けてくれてありがとう。

4

3 に答える 3

0

が配列の場合$group_list、次のようにリストからランダムな項目を取得できます。

$auto_join_group = $group_list[rand(0, count($group_list)-1)];
于 2013-05-31T22:54:44.707 に答える
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()その関数はそのユーザーをそのグループに追加するように見えるため、セクションを引き続き使用する必要があります。

于 2013-05-31T22:55:17.173 に答える
0

ORDER BY RAND() LIMIT 1ランダムに 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 );
于 2013-05-31T22:56:18.353 に答える