Автоматически сменить роль пользователя, если он переходит по ссылке

Есть сайт на WordPress. Есть роль пользователя block1_course2, которую нужно присвоить пользователю, в тот момент, когда он кликнет на ссылку "site.com/courses/kurs-2-2/". Можно ли такое реализовать? Читала про add_role(), но не могу разобраться.


Ответы (2 шт):

Автор решения: SeVlad

Можно ли такое реализовать? Читала про add_role(), но не могу разобраться.

add_role() используется для создания роли. Для присваивания роли юзеру нужно использовать хук add_user_role()

→ Ссылка
Автор решения: Valerii Vasiliev

Можно попробовать сделать так

  1. Вариант с переходом на страницу
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' );
       }
}
  1. Вариант с кликом
    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' );
    }
→ Ссылка