Как добавить кнопку "Скрыть контент" с запросом на регистрацию для доступа в WordPress?
Здравствуйте! У меня возникла проблема в WordPress. Я хочу добавить кнопку "Скрыть контент", при нажатии на которую пользователь будет перенаправлен на страницу регистрации, а после успешной регистрации получит доступ к скрытому контенту.
У меня есть следующий код, но у меня возникают проблемы с его реализацией:
if( is_user_logged_in() ) {
// Показать контент
echo "Здесь находится скрытый контент";
} else {
// Показать кнопку "Скрыть контент" и запрос на регистрацию
echo '<a href="' . wp_login_url() . '?redirect_to=' . get_permalink() . '">Скрыть контент</a>';
}
После вставки данного кода на страничку, я ожидаю увидеть кнопку "Скрыть контент", закрытый контент и запрос на регистрацию при нажатии на эту кнопку. Однако, по какой-то причине, я получаю только кнопку, но контент не скрывается и запрос на регистрацию не происходит.
Буду благодарна за помощь в решении этой проблемы! Большое спасибо заранее!
Ответы:
Возможно, проблема заключается в том, что код не правильно определяет, когда пользователь авторизован. Проверьте настройки авторизации и убедитесь, что условие `is_user_logged_in()` работает корректно.
Проблема с вашим кодом заключается в том, что вы не сделали проверку на успешную регистрацию пользователя после перенаправления на страницу регистрации. Когда пользователь нажимает на ссылку "Скрыть контент", он перенаправляется на страницу входа в систему, но после регистрации он не будет автоматически перенаправлен обратно на страницу, где находится скрытый контент.
Чтобы исправить эту проблему, вам нужно использовать хук `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() . '®istered=true">Скрыть контент</a>';
}
Теперь, когда пользователь нажимает на кнопку "Скрыть контент" и выполняет регистрацию, он будет перенаправлен обратно на страницу с скрытым контентом.
Надеюсь, это поможет вам решить вашу проблему! Если у вас возникнут еще вопросы, не стесняйтесь задавать. Удачи!