bellalebedeva96 28.01.2023 10:55

Как добавить кнопку "Скрыть контент" с запросом на регистрацию для доступа в WordPress?

Здравствуйте! У меня возникла проблема в WordPress. Я хочу добавить кнопку "Скрыть контент", при нажатии на которую пользователь будет перенаправлен на страницу регистрации, а после успешной регистрации получит доступ к скрытому контенту.

У меня есть следующий код, но у меня возникают проблемы с его реализацией:


if( is_user_logged_in() ) {
    // Показать контент
    echo "Здесь находится скрытый контент";
} else {
    // Показать кнопку "Скрыть контент" и запрос на регистрацию
    echo '<a href="' . wp_login_url() . '?redirect_to=' . get_permalink() . '">Скрыть контент</a>';
}

После вставки данного кода на страничку, я ожидаю увидеть кнопку "Скрыть контент", закрытый контент и запрос на регистрацию при нажатии на эту кнопку. Однако, по какой-то причине, я получаю только кнопку, но контент не скрывается и запрос на регистрацию не происходит.

Буду благодарна за помощь в решении этой проблемы! Большое спасибо заранее!

Ответы:

Rimma18Grishina 28.01.2023 11:03
Возможно, проблема заключается в том, что код не правильно определяет, когда пользователь авторизован. Проверьте настройки авторизации и убедитесь, что условие `is_user_logged_in()` работает корректно.
Intellectual30 28.01.2023 11:08
Проблема с вашим кодом заключается в том, что вы не сделали проверку на успешную регистрацию пользователя после перенаправления на страницу регистрации. Когда пользователь нажимает на ссылку "Скрыть контент", он перенаправляется на страницу входа в систему, но после регистрации он не будет автоматически перенаправлен обратно на страницу, где находится скрытый контент. Чтобы исправить эту проблему, вам нужно использовать хук `template_redirect`, который будет выполнен после успешной регистрации и перенаправит пользователя обратно на страницу, где находится скрытый контент. Вот как это можно сделать:

function redirect_after_registration() {
    // Если пользователь только что зарегистрировался
    if ( isset( $_GET['registered'] ) ) {
        // Получаем ссылку на страницу, откуда он был перенаправлен
        $redirect_url = wp_get_referer();

        // Если ссылка была найдена
        if ( $redirect_url ) {
            // Перенаправляем пользователя обратно на эту страницу
            wp_redirect( $redirect_url );
            exit;
        }
    }
}
add_action( 'template_redirect', 'redirect_after_registration' );
Теперь, когда пользователь успешно зарегистрирован, он будет перенаправлен обратно на страницу с скрытым контентом. Измените ваш код следующим образом:

if( is_user_logged_in() ) {
    // Показать контент
    echo "Здесь находится скрытый контент";
} else {
    // Показать кнопку "Скрыть контент" и запрос на регистрацию
    echo '<a href="' . wp_login_url( get_permalink() ) . '?redirect_to=' . get_permalink() . '&registered=true">Скрыть контент</a>';
}
Теперь, когда пользователь нажимает на кнопку "Скрыть контент" и выполняет регистрацию, он будет перенаправлен обратно на страницу с скрытым контентом. Надеюсь, это поможет вам решить вашу проблему! Если у вас возникнут еще вопросы, не стесняйтесь задавать. Удачи!

Добавить ответ