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

Как-то раз я написал подробнейший пост про регистрацию собственного статуса записи в 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

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

Подпишитесь, чтобы раз в неделю получать свежие статьи с блога по email.

Всё про статусы постов

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

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

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

    • Миша10 июня 2015 в 23:06 #

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

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

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

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

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

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

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

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

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

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

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

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

phpjsHTMLCSSSQLПросто код
  Для того, чтобы оставить комментарий, пожалуйста, зарегистрируйтесь или авторизуйтесь на сайте.
Получайте новости блога по email или следите за мной в социальных сетях.
  • alex morozov: Добрый вечер! у меня возникла следующая проблема. Я делаю фотоальбомы, чтобы они выглядели "как в контакте". Так вот, та...

  • Vladislav: Если эту муть убрать, то исчезает меню, и появляется описание под миниатюрами, которого не должно быть, как вы видите, я...

  • Миша: Либо размеры изображений вам помогут, либо CSS. И строку 14 гляньте, там муть какая-то.

  • Vladislav: Подправил имеющийся у меня код, по вашим рекомендациям, миниатюры начали отображаться, но они стали очень огромными, что...

  • Миша: Лишь предложил решение. Думаю можно нашаманить и так, чтобы чисто для рубрик было, не уверен только, что обойдётся без и...