get_post_status

Позволяет изменить статус записи
Хук WordPress
INT 4.4.0
WordPress Icon

Описание хука

Хук «get_post_status» позволяет определить статус записи (поста) в WordPress. Он вызывается при получении статуса записи с помощью функции get_post_status(). Хук позволяет изменить или получить текущий статус записи.

Использование

apply_filters( 'get_post_status', string $post_status, WP_Post $post )

Хук «get_post_status» принимает два параметра: $post_status (строка) — текущий статус записи, и $post (объект WP_Post) — объект записи. Функция apply_filters() используется для применения хука и передачи параметров.

  • $post_status (string) — Статус записи.
  • $post (WP_Post) — Объект записи.
<?php
/**
 * Функция-обработчик для хука "get_post_status".
 *
 * @param string  $post_status Статус записи.
 * @param WP_Post $post        Объект записи.
 * @return string Измененный статус записи.
 */
function custom_get_post_status( $post_status, $post ) {
    // Ваш код обработки статуса записи.
    // Например, можно изменить статус в зависимости от условий.
    if ( $post_status === 'draft' ) {
        return 'custom_status';
    }
    return $post_status;
}
add_filter( 'get_post_status', 'custom_get_post_status', 10, 2 );

В приведенном примере мы создаем функцию custom_get_post_status(), которая является обработчиком хука «get_post_status». В этой функции мы можем изменить статус записи, например, если текущий статус является «draft», мы возвращаем наш пользовательский статус «custom_status». Функция add_filter() используется для добавления нашего обработчика хука.

Примеры использования

Изменение статуса публикации


/**
 * Пример изменения статуса публикации на "draft".
 *
 * @param string   $post_status The post status.
 * @param WP_Post  $post        The post object.
 * @return string  The modified post status.
 */
function wpdocs_change_post_status( $post_status, $post ) {
    if ( $post->post_type === 'post' ) {
        $post_status = 'draft';
    }
    return $post_status;
}
add_filter( 'get_post_status', 'wpdocs_change_post_status', 10, 2 );

В данном примере мы используем хук «get_post_status» для изменения статуса публикации на «draft» для всех постов типа «post». Функция «wpdocs_change_post_status» принимает текущий статус публикации и объект поста в качестве параметров. Если тип поста равен «post», то статус публикации изменяется на «draft». В конце функции возвращается измененный статус публикации.

Получение списка публикаций с определенным статусом


/**
 * Пример получения списка публикаций с определенным статусом.
 */
function wpdocs_get_posts_by_status() {
    $args = array(
        'post_status' => 'publish',
        'posts_per_page' => 5
    );
    $query = new WP_Query( $args );
    
    if ( $query->have_posts() ) {
        while ( $query->have_posts() ) {
            $query->the_post();
            // Выводим заголовок поста
            echo get_the_title() . '<br>';
        }
        wp_reset_postdata();
    } else {
        echo 'Нет публикаций с указанным статусом.';
    }
}

В данном примере мы используем класс «WP_Query» для получения списка публикаций с определенным статусом. В аргументах запроса указываем статус публикации «publish» и количество постов, которые нужно получить (в данном случае 5). Затем проходимся по полученным постам с помощью цикла «while» и выводим заголовок каждого поста с помощью функции «get_the_title()». В конце сбрасываем данные запроса с помощью функции «wp_reset_postdata()». Если нет публикаций с указанным статусом, выводим сообщение об этом.

Установка статуса публикации


/**
 * Пример установки статуса публикации на "private".
 */
function wpdocs_set_post_status() {
    $post_id = 123; // Идентификатор поста, для которого нужно установить статус
    $post = get_post( $post_id );
    
    if ( $post ) {
        $post->post_status = 'private';
        wp_update_post( $post );
        echo 'Статус публикации успешно изменен.';
    } else {
        echo 'Пост с указанным идентификатором не найден.';
    }
}

В данном примере мы используем функцию «wp_update_post» для установки статуса публикации на «private» для определенного поста. Сначала получаем объект поста с помощью функции «get_post» и указываем его идентификатор. Затем изменяем статус публикации на «private» и обновляем пост с помощью функции «wp_update_post». Если пост с указанным идентификатором не найден, выводим соответствующее сообщение.

Проверка статуса публикации


/**
 * Пример проверки статуса публикации.
 */
function wpdocs_check_post_status() {
    $post_id = 123; // Идентификатор поста, для которого нужно проверить статус
    $post = get_post( $post_id );
    
    if ( $post && $post->post_status === 'publish' ) {
        echo 'Публикация опубликована.';
    } elseif ( $post && $post->post_status === 'draft' ) {
        echo 'Публикация в черновиках.';
    } else {
        echo 'Статус публикации неизвестен.';
    }
}

В данном примере мы используем функцию «get_post» для получения объекта поста с указанным идентификатором. Затем проверяем статус публикации с помощью условных операторов. Если статус равен «publish», выводим сообщение «Публикация опубликована». Если статус равен «draft», выводим сообщение «Публикация в черновиках». Если статус неизвестен или пост не найден, выводим соответствующее сообщение.

Вопросы и ответы

Как получить статус записи в WordPress?

Для получения статуса записи в WordPress можно использовать хук get_post_status. Этот хук позволяет фильтровать статус записи.

Пример использования хука get_post_status:


function custom_get_post_status($post_status, $post) {
    // Ваш код здесь
    return $post_status;
}
add_filter('get_post_status', 'custom_get_post_status', 10, 2);

Как изменить статус записи в WordPress?

Для изменения статуса записи в WordPress можно использовать функцию wp_update_post. Эта функция позволяет обновить статус записи.

Пример использования функции wp_update_post:


// Получаем объект записи
$post = get_post(123);
// Изменяем статус записи на "draft"
$post->post_status = 'draft';
// Обновляем запись
wp_update_post($post);

Как добавить новый статус записи в WordPress?

Для добавления нового статуса записи в WordPress можно использовать хук register_post_status. Этот хук позволяет зарегистрировать новый статус записи.

Пример использования хука register_post_status:


function custom_register_post_status() {
    register_post_status('custom_status', array(
        'label' => 'Custom Status',
        'public' => true,
        'exclude_from_search' => true,
    ));
}
add_action('init', 'custom_register_post_status');

Как удалить статус записи в WordPress?

Для удаления статуса записи в WordPress можно использовать хук get_post_status. Этот хук позволяет изменить значение статуса записи перед его получением.

// Удаление статуса записи
add_filter( 'get_post_status', function( $post_status, $post ) {
    // Удаление статуса "publish"
    if ( $post_status === 'publish' ) {
        $post_status = '';
    }
    return $post_status;
}, 10, 2 );

Как проверить, является ли статус записи определенным значением?

Для проверки, является ли статус записи определенным значением, можно использовать хук get_post_status в сочетании с условным оператором.

// Проверка статуса записи
add_filter( 'get_post_status', function( $post_status, $post ) {
    // Проверка на статус "draft"
    if ( $post_status === 'draft' ) {
        // Действия, если статус "draft"
    }
    return $post_status;
}, 10, 2 );

Какие значения может принимать статус записи в WordPress?

Статус записи в WordPress может принимать следующие значения:

  • publish — опубликованная запись;
  • future — запись с запланированной публикацией;
  • draft — черновик записи;
  • pending — запись, ожидающая проверки;
  • private — приватная запись;
  • trash — запись в корзине;
  • auto-draft — автоматически созданный черновик записи;
  • inherit — запись, унаследованная от другой записи;
  • request-pending — запись, ожидающая подтверждения;
  • request-confirmed — запись, подтвержденная после ожидания.

Какие хуки можно использовать совместно с get_post_status?

Хук get_post_status можно использовать совместно с другими хуками WordPress для более гибкой обработки статуса записи. Например:

  • pre_get_posts — позволяет изменить параметры запроса перед получением записей;
  • wp_insert_post_data — позволяет изменить данные записи перед их сохранением;
  • transition_post_status — вызывается при изменении статуса записи.

Хук get_post_status в WordPress позволяет изменять и проверять статус записи. Он предоставляет возможность гибкой обработки статуса записи и взаимодействия с другими хуками для более сложной логики. Используйте этот хук, чтобы настроить работу со статусами записей в своем проекте на WordPress.

Связанные элементы

  • Функция get_post(): возвращает объект поста по его ID.
  • Функция get_post_field(): возвращает значение указанного поля поста.
  • Функция get_post_meta(): возвращает значение мета-поля поста.
  • Хук pre_get_posts: позволяет изменить параметры запроса перед получением постов.
  • Хук wp_insert_post_data: позволяет изменить данные перед сохранением поста в базе данных.
  • Хук wp_trash_post: вызывается перед перемещением поста в корзину.
  • Класс WP_Post: представляет объект поста и содержит его свойства и методы.
Обсуждение