Как добавить свой статус в быстрое редактирование постов

Как-то раз я написал подробнейший пост про регистрацию собственного статуса записи в WP. В нём я старался осветить практически все моменты, но про один я всё же забыл — про добавление статуса в меню «Свойства» (быстрое редактирования поста).

Итак, давайте приступим. Обратите внимание, в этом посту подразумевается, что вы уже создали какой-то свой статус, у меня это — «Архив».

1
2
3
4
5
6
7
8
9
add_action('admin_footer-edit.php','true_dobavlenie_statusa');
 
function true_dobavlenie_statusa() {
	echo "<script>
	jQuery(document).ready( function($) {
		$( 'select[name=\"_status\"]' ).append( '<option value=\"archive\">Архив</option>' );
	});
	</script>";
}

Комментарии к коду:

  • Код вставляем в functions.php вашей темы. Но это необязательно, просто вставляйте куда хотите, если знаете что делаете.
  • Для начинающих на всякий случай уточню (потому что часто делается такая ошибка), что если ваш файл functions.php пустой, то на его первую строку не помешает также добавить <?php.
  • 1-3. Обратите внимание на фильтр admin_footer-edit.php — это означает, что код будет применяться в админке только к страницам со списком записей wp-admin/edit.php, страниц wp-admin/edit.php?post_type=page и произвольных типов постов wp-admin/edit.php?post_type=тип_поста.
  • 6. Вы наверное заметили, что тут я не использовал jQuery-функцию each() — дело в том, что HTML быстрых настроек только один на странице, просто для каждого поста в него подставляются разные значения. По той же причине у элемента <option> нет атрибута selected.
  • Задействовав фукнцию get_post_stati(), вы сможете добавить в быстрое редактирование абсолютно все существующие статусы записей, только будьте внимательны — некоторые из них не изменяются корректно с использованием этого способа.

Вот что у меня в итоге получилось:

добавление произвольного статуса в меню быстрого редактирования поста

А у вас? Если да, то возможно некоторые из вас сразу задались вопросом — можно ли для новых статусов добавлять метки, так же, как они добавляются для черновиков, записей на модерации и пр. Чтобы было понятно, то вот скриншот:

метки статусов в WordPress

У меня есть небольшое руководство относительно того, как это сделать тут.

Миша

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

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

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

  • вадик10 июня 2015 #

    а можно какнибудь использовать фильтр admin_footer-edit.php чтобы убрать показ дерева родителей - потомучто у меня их набралось уже 5 тысяч в одном типе записей и админка на этом типе записей долго грузится

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

      admin_footer-edit.php вы скорее всего сможете использовать только для сокрытия их через CSS.

      Если вам нужно снизить нагрузку на страницу, то нужно подыскать другой фильтр.

      • вадик11 июня 2015 #

        спасибо за быстрый ответ.
        немного поискал в гугле. нашел remove_meta_box(). с помощью этого можно удалить многие блоки на странице РЕДАКТИРОВАНИЯ или СОЗДАНИЯ поста.
        сделал такое
        function remove_custom_block() {
        remove_meta_box( 'pageparentdiv', 'my_post_type', 'side' );
        }
        add_action( 'admin_menu', 'remove_custom_block' );

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

      • вадик11 июня 2015 #

        а ну у вас же на сайте эта функция уже описана, причем со скриншотами. классно!

      • вадик11 июня 2015 #

        в общем нашел только "quick_edit_dropdown_pages_args", с помощью которого можно только ограничить вывод данных в общем выпадающем списке родителей (добавить черновики, ограничить уровень вложенности).
        фильтр работает, сократил выпадающий список, но страница загружается все равно также медленно. видимо все равно происходит поиск по все базе.

        вообще хотелось бы полностью отключить quick edit на некоторых пользовательских типах записей, но не могу найти решения. в гугле встречаются похожие просьбы и как раз изза моих же причин - когда накапливается много страниц в одном типе записей то админка грузится дольше. но решения пока не найдено.

        пс. спасибо за сайт. в основном по вордпрессу в буржунете много инфы по хакам всяким. а у нас мало кто реально интересные (не стандартные) вещи выкладывает.

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

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