Как защитить страницу WordPress паролем?
Мне необходимо защитить паролем весь контент страницы. По умолчанию, WordPress защищает паролем только то, что находится в the_content(). Я написала следующий код и он один раз сработал. Но, повторно при открытии страницы пароль больше не запрашивается. Как сделать так, что бы пароль запрашивался каждый раз при открытии страницы?
Сейчас код выглядит так:
<?php
/*
Template Name: Locations
*/
?>
<?php get_header(); ?>
<main class="page-location">
<?php
global $post;
if ( post_password_required( $post ) ) {
?>
<div class="text-sub">CUSTOM CONTENT THAT DISPLAYS ONLY WHEN PAGE IS PASSWORD PROTECTED
GOES HERE</div>
<?php echo get_the_password_form(); ?>
<?php
} else {
// Page isn't password-protected
?>
<?php if (have_posts()) : ?>
<?php while (have_posts()) : the_post(); ?>
<div class="wrapper">
</div>
<!-- /.tabs -->
<?php endwhile; endif; } ?>
</main>
<?php get_footer(); ?>
Ответы (2 шт):
Автор решения: KAGG Design
→ Ссылка
Пароль не запрашивается вторично, потому что выставляется cookie.
Автор решения: Valerii Vasiliev
→ Ссылка
Пароль хранится в куке в переменной $COOKIE['wp-postpass' . COOKIEHASH]
Попробуйте после показа страницы - отправить ajax запрос на удаление куки
function delete_post_password_cookie() {
unset( $_COOKIE['wp-postpass_' . COOKIEHASH] );
setcookie( 'wp-postpass_' . COOKIEHASH, '', time() - ( 15 * 60 ) );
}
add_action('wp_ajax_delete_post_password_cookie', 'delete_post_password_cookie');
add_action('wp_ajax_nopriv_delete_post_password_cookie', 'delete_post_password_cookie');