Функция POST_PASSWORD_REQUIRED() в WordPress: использование и примеры

Функция 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() полезна для защиты ваших постов с паролем. Она помогает проверить, требуется ли пароль для доступа к содержимому, и управляет вводом пользователя. Этим можно эффективно управлять, если вы хотите ограничить доступ к определенным материалам на вашем сайте.

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *