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

Как-то раз я написал подробнейший пост про регистрацию собственного статуса записи в 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 или следите за мной в социальных сетях.
  • Владимир: и на третьей строке не хватает скобки ) закрывающей if :)

  • Миша: Добрый вечер! Рекомендую получить ID пользователя через функцию get_current_user_id().

  • Дмитрий: Миша, подскажите пожалуйста, я использую такой редирект, но он не срабатывает: add_action( 'template_redirect', funct...

  • Миша: Ну как не определена - это аргумент функции. Или я просто вас не до конца понимаю.

  • Артем: Ага, понял. Вот только почему $args? Она же нигде не определена, по логике должна быть переменная $true_field_params или...