Автоматически сменить роль пользователя, если он переходит по ссылке
Есть сайт на WordPress. Есть роль пользователя block1_course2, которую нужно присвоить пользователю, в тот момент, когда он кликнет на ссылку "site.com/courses/kurs-2-2/". Можно ли такое реализовать? Читала про add_role(), но не могу разобраться.
Ответы (2 шт):
Автор решения: SeVlad
→ Ссылка
Можно ли такое реализовать? Читала про add_role(), но не могу разобраться.
add_role() используется для создания роли. Для присваивания роли юзеру нужно использовать хук add_user_role()
Автор решения: Valerii Vasiliev
→ Ссылка
Можно попробовать сделать так
- Вариант с переходом на страницу
add_action('wp', 'add_new_role', 10, 2);
function add_new_role() {
global $wp;
$current_slug = add_query_arg( array(), $wp->request );
if (is_user_logged_in() && $current_slug == 'courses/kurs-2-2') {
$u = new WP_User( get_current_user_id() );
$u->set_role( 'new_role' );
}
}
- Вариант с кликом
jQuery(document).ready(function($) {
$("a[href='https://site.com/courses/kurs-2-2/']").click(function(){
jQuery.ajax({
url: '<?php admin_url( 'admin-ajax.php' ); ?>',
type: 'GET',
data: 'action=set_user_role',
success: function( data ) {
}
});
return false;
});
});
add_action('wp_ajax_set_user_role', 'set_user_role');
function set_user_role() {
$u = new WP_User( get_current_user_id() );
$u->set_role( 'new_role' );
}