Добавляю возможность вступить в группу с любой страницы сайта. Кнопку вывел по коду
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>';
Также выводится текстовое поле, куда можно вписать название группы.
Но тут возникает вопрос, как вступить по названию группы?
Можно обойтись штатными средствами или необходимо ваять дополнение?
Получается, чтобы вступить в группу мне нужно передать из формы параметр wp_http_referer с содержанием вида rcl-groups%252Fgroup111%252F
но для этого нужно находиться в каталоге rcl-groups/group111, что не подходит
Достаточно прочитать исходный код, там не так много его и сами функции носят говорящее имя.
Запрос на членство в функции rcl_group_add_request_for_membership()
все запросы рулит функция rcl_group_actions()
Принимает запрос функция rcl_apply_group_request()
Добавляет в группу rcl_group_add_user()
честно говоря - не знаю что там рассказывать. Надо брать за основу то что есть и делать как надо и в каком месте нужно
Добавил в функцию 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
возвращает пустой
$get_group
выдает данные поля формы
Подставил в $get_group
в таком формате case 'join2': rcl_group_add_user2($user_ID, $get_group); break;
в таком варианте тоже регистрирует, но если отправлять id группы
Если у вас есть id - вы можете запустить процесс. Смотрите функцию rcl_group_init()
- там по id заполняется глобальная переменная $rcl_group
. Ну а дальше она содержит в себе все нужные даные
Я не совсем понимаю - вы само название то откуда берете? Не из головы же. А вообще группы - вордпресс термы произвольного типа записи.