Как зарегистрировать новый статус записи в WordPress

Записи WordPress позволяют вам иметь некое подобие рабочей среды при редактировании записей. Это достигается путем назначения записи определенного статуса на каждом этапе.

По-умолчанию, WordPress задает статус Черновик, это сообщает движку, что нужно создать запись, но не публиковать ее на сайте; запись будет опубликована только когда вы нажмете кнопку «Опубликовать», а статус записи изменится на Опубликован.

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

Статусами по-умолчанию в WordPress являются:

  • Опубликован — Видимы всем пользователям на фронтенде сайта.
  • Запланировано — Записи, которые запланированы для публикации на будущую дату.
  • Черновик — Неполная запись, видимая только зарегистрированным пользователям с соответствующими правами.
  • На утверждении — Работа над записью завершена, однако ожидает кого-то с правами публикации для опубликования записи.
  • Личное — Запись видна только администраторам сайта.
  • Удалено — Записи, которые были удалены.
  • Автосохранение — WordPress автоматически сохраняет черновики.
  • Унаследовано — Используется дочерними записями, такими как вложения для определения родительского статуса.

Создаем собственные статусы записей

Если вы хотите создать ваш собственный статус записи, то WordPress позволит вам это сделать.

Функция, которую нужно использовать, это register_post_status в action init.

function create_new_archive_post_status(){
	register_post_status( 'archive', array(
		'label'                     => _x( 'Archive', 'post' ),
		'public'                    => true,
		'exclude_from_search'       => false,
		'show_in_admin_all_list'    => true,
		'show_in_admin_status_list' => true,
		'label_count'               => _n_noop( 'Archive <span class="count">(%s)</span>', 'Archive <span class="count">(%s)</span>' ),
	) );
}
add_action( 'init', 'create_new_archive_post_status' );

Проблема заключается в том, что WordPress не выведет ваши новые статусы в соответствующее выпадающее меню на стране редактирования записи.

По этой проблеме открыт тикет, но открыт он уже 5 лет, и уверенности, что проблему исправят нет.

Trac Ticket #12706

Для того, чтобы добавить эти статусы записей в выпадающее меню, вам придется немного потрудиться и сделать это самостоятельно с помощью небольшого кусочка кода JavaScript, который будет использовать post_submitbox_misc_actions action.

function add_to_post_status_dropdown()
{
    ?>
    <script>
    jQuery(document).ready(function($){
        $("select#post_status").append("<option value=\"archive\" <?php selected('archive', $post->post_status); ?>>Archive</option>");
    });
    </script>
    <?php
}

add_action( 'post_submitbox_misc_actions', 'add_to_post_status_dropdown');

Функция выше добавит кусочек JavaScript на страницу, что позволит вывести статус записи Архив в выпадающее меню, и им можно будет полноценно пользоваться.

Получаем все доступные статусы записей

Для получения списка всех доступных статусов записей можно воспользоваться функцией get_post_stati(), которая вернет массив.

$postStatuses = get_post_stati();

Мы надеемся, что эта статья помогла вам зарегистрировать новые статусы записей в WordPress.

По всем вопросам и отзывам просьба писать в комментарии ниже.

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

VN:F [1.9.22_1171]
Rating: 5.0/5 (3 votes cast)

Об авторе ADv

Занимаюсь разработкой сайтов и магазинов на WordPress. Оказываю платные помощь и консультации. Skype: advokat_b
Scroll To Top