Вариантов достаточно
много. В целом это и руками делается достаточно просто
1. Регистрируете get переменную
ref
add_filter( 'query_vars', 'add_query_vars' );
function add_query_vars( $qvars ) {
$qvars[] = 'ref';
return $qvars;
}
2. В ЛК создаете поле, которое можно скопировать. В гет-параметр пишите id пользователя
https://example.ru/?ref=48
3. На
init проверяете значение гет-параметра, если пользователь не авторизован или его id отличается от гет-запроса, то пишите id реферрала
setcookie()
function set_new_cookie() {
if ( $ref = get_query_var( 'ref', false ) ) {
//setting your cookies there
}
}
add_action( 'init', 'set_new_cookie' );
4. На хуке
user_register проверяете, существует ли указанные cookie и пишите его в мету для дальнейшей обработки
add_action( 'user_register', 'referral_registration_save', 10, 1 );
function referral_registration_save( $user_id ) {
if ( isset( $_COOKIE['ref'] ) )
add_user_meta( $user_id, 'ref', $_COOKIE['ref'], true );
}