WooCommerce - перенаправление вошедших в систему пользователей в зависимости от их роли - PullRequest
1 голос
/ 08 марта 2019

Этот запрос основан на членстве и подписках WooCommerce.

Я должен добавить, что я также пытаюсь решить, хорош ли UX для того, что я делаю.

ЕстьЕсть много решений для перенаправления пользователей после входа в систему, но у меня возникает ситуация, когда я хочу перенаправить пользователя с ролью «подписчика», когда он нажимает на конкретные ссылки на страницы, которые описывают и позволяют вам стать участником.Поэтому, хотя я не хочу скрывать «присоединиться сейчас» и т. Д. Я просто хочу, чтобы они перенаправили на страницу моего аккаунта.

Опять же, существуют различные роли и плагины для перенаправления, но ни один из них не помогает в этом конкретном сценарии.Итак, источник кода, который я использовал, находится здесь: SOURCE , и я собираюсь сделать что-то вроде этого:

function eks_redirect_users_by_role() {

    global $post;
    $current_user   = wp_get_current_user();
    $role_name      = $current_user->roles[0];


    if ( 'subscriber' === $role_name && $post->ID == 47145)  {
        wp_redirect( '/my-account' );
    } 

} 
add_action( 'admin_init', 'eks_redirect_users_by_rol
e' );

Так что, если пользовательская роль подписчик, и они пытаютсяи посетите страницу с идеей, что она перенаправлена.

В настоящее время он возвращается к странице продукта, на которой написано «у вас уже есть членство», но для этого требуется несколько шагов.

Ответы [ 2 ]

1 голос
/ 25 марта 2019

Это может быть более полезным и правильным способом для достижения вашего запроса.

function redirection_based_user_role(){

    $current_user   = wp_get_current_user();
    $role_name      = $current_user->roles[0];
    $postid         = get_the_ID();

    if ( 'subscriber' === $role_name && $postid == 47145  ) {
        wp_redirect( home_url( '/my-account' ), 301 );
        exit;
    }
}
add_action( 'template_redirect', 'redirection_based_user_role' );

Надеюсь, что это работает.

0 голосов
/ 09 марта 2019

Мне удалось добиться желания, которого я хотел, следующим образом:

function eks_redirect_user() {

    $current_user   = wp_get_current_user();
    $role_name      = $current_user->roles[0];
    $postid = get_the_ID();

    if ( 'subscriber' === $role_name && $postid == 47145  ) { ?>
        <script>
function redirectPage() {

    window.location = "/my-account/";
}

redirectPage();
</script>

<?php
        exit;
    }

}
add_action('wp_footer', 'eks_redirect_user' );

Проблема в том, что это довольно неопрятное решение, поскольку перенаправление кажется странным.Я не уверен, что использование wp_redirect будет работать лучше.Я решил сделать это - просто отключить кнопку на странице с основной информацией о членстве, а не перенаправлять каждый призыв к действию на страницу учетной записи, что кажется более элегантным решением.

...