Добавляю возможность вступить в группу с любой страницы сайта. Кнопку вывел по коду
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. Ну а дальше она содержит в себе все нужные даные
Я не совсем понимаю - вы само название то откуда берете? Не из головы же. А вообще группы - вордпресс термы произвольного типа записи.