Функция POST_PASSWORD_REQUIRED() в WordPress
Функция POST_PASSWORD_REQUIRED() в WordPress проверяет, требуется ли для доступа к посту пароль, и был ли введен правильный пароль.
Использование функции
Функция под названием post_password_required принимает один аргумент — идентификатор поста, для которого нужно проверить наличие пароля.
$post_password_required( $post );
Где:
$post— идентификатор поста (целое число или объект WP_Post). Если не указать, используется текущий глобальный пост.- По умолчанию:
null
Возврат значения
Функция возвращает:
true— если для доступа к посту требуется пароль и пароль не был введен.false— если пароль не требуется или правильный пароль уже введен.
Примеры применения
Пример 1: Проверка только для защищенных паролем постов
Допустим, пост с ID 443 защищён паролем:
if( post_password_required( 443 ) ) {
echo "Этот пост защищен паролем!";
}
Пример 2: Отображение постов только при наличии правильного пароля
Этот пример показывает, как отображать пост, если пользователь ввел правильный пароль:
$master_post = get_post();
if ( post_password_required( $master_post->ID ) ) {
echo 'Этот пост защищен паролем: пожалуйста, введите его!
';
echo get_the_password_form();
} else {
if ( have_posts() ) {
while ( have_posts() ) {
the_post();
the_content();
echo '
';
}
} else {
echo 'Ничего не найдено!
';
}
}
Примечание: Убедитесь, что используете режим инкогнито при тестировании кода, так как куки могут мешать отладке.
Код функции
Вот как выглядит код функции post_password_required в WordPress:
function post_password_required( $post = null ) {
$post = get_post( $post );
if ( empty( $post->post_password ) ) {
return apply_filters( 'post_password_required', false, $post );
}
if ( ! isset( $_COOKIE[ 'wp-postpass_' . COOKIEHASH ] ) ) {
return apply_filters( 'post_password_required', true, $post );
}
require_once ABSPATH . WPINC . '/class-phpass.php';
$hasher = new PasswordHash( 8, true );
$hash = wp_unslash( $_COOKIE[ 'wp-postpass_' . COOKIEHASH ] );
if ( ! str_starts_with( $hash, '$P$B' ) ) {
$required = true;
} else {
$required = ! $hasher->CheckPassword( $post->post_password, $hash );
}
return apply_filters( 'post_password_required', $required, $post );
}
Заключение
Функция post_password_required() полезна для защиты ваших постов с паролем. Она помогает проверить, требуется ли пароль для доступа к содержимому, и управляет вводом пользователя. Этим можно эффективно управлять, если вы хотите ограничить доступ к определенным материалам на вашем сайте.