Домой Wp-Recall WP-Recall: Пишем свое дополнение и кастомизация Добавление поля вступления в группу в произвольное место
12ответ(ов) в теме
jrco
не в сети 5 лет
На сайте с 20.07.2019
Участник
Тем 5
Сообщения 22
1
15:09
Версия WP-Recall: 16.17.14

Добавляю возможность вступить в группу с любой страницы сайта. Кнопку вывел по коду

echo '<form method="post">' . '<input type="submit" class="recall-button" name="group-submit" value="'.__('Join group','wp-recall').'">' . '<input type="hidden" name="group-action" value="join">' . wp_nonce_field( 'group-action-' . $user_ID,'_wpnonce',true,false ) <br><br> . '</form>';
Также выводится текстовое поле, куда можно вписать название группы.

Но тут возникает вопрос, как вступить по названию группы?

Можно обойтись штатными средствами или необходимо ваять дополнение?

0
jrco
не в сети 5 лет
На сайте с 20.07.2019
Участник
Тем 5
Сообщения 22
2
18:48

Получается, чтобы вступить в группу мне нужно передать из формы параметр wp_http_referer с содержанием вида rcl-groups%252Fgroup111%252F

но для этого нужно находиться в каталоге rcl-groups/group111, что не подходит

Редакции сообщения
20.07.2019 18:49jrcoПричина: не указано
20.07.2019 18:50jrcoПричина: не указано
0
jrco
не в сети 5 лет
На сайте с 20.07.2019
Участник
Тем 5
Сообщения 22
3
19:21

Было бы круто если бы кто-то объяснил как работает процесс вступления в группу, чет не могу вьехать

Редакции сообщения
20.07.2019 19:21jrcoПричина: не указано
0
Вова (Otshelnik-Fm)
не в сети 4 дня
На сайте с 27.01.2013
Участник
Тем 43
Сообщения 18654
4
19:34

Достаточно прочитать исходный код, там не так много его и сами функции носят говорящее имя.

Запрос на членство в функции rcl_group_add_request_for_membership()
все запросы рулит функция rcl_group_actions()
Принимает запрос функция rcl_apply_group_request()
Добавляет в группу rcl_group_add_user()

честно говоря - не знаю что там рассказывать. Надо брать за основу то что есть и делать как надо и в каком месте нужно

Редакции сообщения
20.07.2019 19:34Otshelnik-FmПричина: форматирование
0
jrco
не в сети 5 лет
На сайте с 20.07.2019
Участник
Тем 5
Сообщения 22
5
21:10

Добавил в функцию rcl_group_actions следующую строку
case 'join2': rcl_group_add_user2($user_ID); break;

и продублировал функцию


function rcl_group_add_user2(){
    global $wpdb;

    $get_group = sanitize_text_field($_POST['group-text']);
    $group_id = rcl_create_group(array('name'=>$get_group,'admin_id'=>$user_ID));

    if(rcl_get_group_user_status($user_id,$group_id)) return false;

    $default_role = rcl_get_group_option($group_id, 'default_role');

    $role = ($default_role)?$default_role:'author';

    $args = array(
        'group_id'      =>  $group_id,
        'user_id'       =>  $user_id,
        'user_role'     =>  $role,
        'status_time'   =>  0,
        'user_date'     =>  current_time('mysql')
    );

    $result = $wpdb->insert(
        RCL_PREF.'groups_users',
        $args
    );

    rcl_group_update_users_count($group_id);

    do_action('rcl_group_add_user2',$args);

    return $result;
}

но group-id возвращает пустой

0
jrco
не в сети 5 лет
На сайте с 20.07.2019
Участник
Тем 5
Сообщения 22
6
21:12

если подставить group-id статичный то пользователя регистрирует

Осталось понять как получить ID группы по её названию

Редакции сообщения
20.07.2019 21:24jrcoПричина: не указано
0
Вова (Otshelnik-Fm)
не в сети 4 дня
На сайте с 27.01.2013
Участник
Тем 43
Сообщения 18654
7
22:08

Так а $get_group - запрос что-то вам выдает?

0
jrco
не в сети 5 лет
На сайте с 20.07.2019
Участник
Тем 5
Сообщения 22
8
22:15

$get_group выдает данные поля формы

Подставил в $get_group в таком формате case 'join2': rcl_group_add_user2($user_ID, $get_group); break; в таком варианте тоже регистрирует, но если отправлять id группы

Редакции сообщения
20.07.2019 22:15jrcoПричина: не указано
20.07.2019 22:18jrcoПричина: не указано
0
jrco
не в сети 5 лет
На сайте с 20.07.2019
Участник
Тем 5
Сообщения 22
9
22:27

Можно, по идее, в базе посмотреть id по названию, только жалко в sql не силен, не понял где хранятся названия групп

0
Вова (Otshelnik-Fm)
не в сети 4 дня
На сайте с 27.01.2013
Участник
Тем 43
Сообщения 18654
10
22:58

Если у вас есть id - вы можете запустить процесс. Смотрите функцию rcl_group_init() - там по id заполняется глобальная переменная $rcl_group. Ну а дальше она содержит в себе все нужные даные

Я не совсем понимаю - вы само название то откуда берете? Не из головы же. А вообще группы - вордпресс термы произвольного типа записи.

0
jrco
не в сети 5 лет
На сайте с 20.07.2019
Участник
Тем 5
Сообщения 22
11
00:30

Название берется из уже созданных групп

0
jrco
не в сети 5 лет
На сайте с 20.07.2019
Участник
Тем 5
Сообщения 22
12
00:42

По id я только тестировал. На деле же в известно будет только название, по которому нужно будет узнать id, чтобы вступить в группу.

Редакции сообщения
21.07.2019 00:43jrcoПричина: орфография
0
Вы не имеете права на публикацию сообщений в этой теме