Снова ищем одного-двух вордпрессеров в нашу команду!

Статусы постов

Надеюсь, мне не придется писать определение того, что такое статусы записей в WP. Лучше я приведу вам много примеров и покажу, как с ними работать.

Каждый пост (вне зависимости от типа, будь то запись, страница или что-то ещё) в WordPress имеет свой статус. Например у опубликованных записей, которые доступны для каждого, статус publish, у черновиков статус draft. Значение статуса хранится в базе данных в табице wp_posts в колонке post_status.

фильтр записей по статусам

Стандартные статусы в WordPress

По умолчанию в WordPress имеется 8 статусов постов. Рассмотрим каждый из них:

  • publish — опубликованный пост. Доступен на сайте для просмотра каждому. Этот статус присваивается записям при нажатии на кнопку «Опубликовать».
    кнопка публикации поста
  • future — пост, запланированный на публикацию в будущем. Для того, чтобы присвоить записи этот статус, устанавливаем время публикации, которое ещё не наступило и нажимаем кнопку «Запланировать».
    кнопка запланированной публикации записи
  • draft — черновики (записи, которые ещё находятся в процессе написания и не готовы к публикации). Для создания черновика нажмите кнопку «Сохранить».
    кнопка сохранения черновика
  • pending — пост, ожидающий проверки редактором или администратором. Все записи пользователей с ролью «Участник» отправляются на модерацию.
    кнопка отправки поста на утверждение
  • private — посты, доступные для просмотра и редактирования только администраторам.
    сохранить пост как личное
  • trash — посты, находящиеся в корзине. Для того, чтобы переместить пост в корзину, нажмите на ссылку «Удалить».
    ссылка перемещения поста в корзину
  • auto-draft — черновики, которые создаются автоматически в процессе редактирования постов.
  • inherit — этот статус присваивается всем вложениям, а также редакциям записей.

Создание произвольного статуса

В версии движка WordPress 3.0 появилась функция register_post_status(), позволяющая регистрировать свой собственный статус постов. Пока что возможности этой функции сильно ограничены, возможно в новых версиях WordPress появится что-то интересное.

В следующем примере создадим статус «unread» (не прочитано). Как видите, функция должна подключаться к хуку init.

function true_status_unread(){
	register_post_status( 'unread', array(
		'label'                     => 'Не прочитано',
		'public'                    => true
	) );
}
 
add_action( 'init', 'true_status_unread' );

Больше примеров смотрите в документации функции register_post_status().

Миша

Впервые познакомился с WordPress в 2009 году. С 2014 года меня можно встретить на WordCamp по всему миру — официальной конфе по WordPress, иногда там выступаю, но с 2019 выступаю только на тех, которые сам организовываю. Также периодически школа Epic Skills и LoftSchool приглашают меня вести у них уроки/вебинары.

Если вам нужна помощь с вашим сайтом или может даже разработка с нуля — пишите мне.

Комментарии 10

  • Роман llgr13 июня 2015 #

    Как через functions.php для post_status == 'private' прицепить функции wp_dequeue_script и remove_action?

    • Миша15 июня 2015 #

      К странице сайта или к админке?

      • Роман llgr15 июня 2015 #

        Привет, к странице сайта. В личные страницы стучатся яндекс и google, получают 404 в ответ. Хочу на функцию вывода скриптов аналитики повесить remove_action, не получается условие записать:

        if($post_status == 'private') { 
        	wp_dequeue_script(  ); 
        	remove_action(  ); 
        }
        • Миша15 июня 2015 #

          Может вызвать:

          global $post;
          if( get_post_status( $post->ID ) == 'private') {
           
          }
          • Роман llgr16 июня 2015 #

            Сделал, спасибо) Почему ты не подключил комментарии соц.сетей или cracle/disqus, какая у тебя на этот счёт позиция?

            • Миша16 июня 2015 #

              Много работал над созданием этой системы Ajax-комментирования, было бы жаль её убирать 🙂

  • Magic25 января 2016 #

    Интересная статья. Подробнее бы узнать про хуки, свазанные со статусами постов

  • Magic25 января 2016 #

    Система комментариев кстати шедевр, хорошо работает, без обновлений страницы

    • Миша26 января 2016 #

      Благодарю )

Оставить комментарий

Если вы хотите добавить код, не забудьте обернуть его в <pre lang="php"></pre>, в случае несоблюдения этого условия в 99% случаях ваш коммент будет удалён, а автор заблокирован. Печалька.