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随机选择一个组。

$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 回答