Як у WordPress створити свій пост-статус

Як у WordPress створити свій пост-статус

Для чого потрібні власні кастомні статуси? Варіантів, як завжди, багато. Я використовував їх лише один раз — позначав таким чином товари, які не потрапили ні в одну з категорій під час імпорту з маркету Яндекса.

Нижче наведено приклад створення власного кастомного статусу для запису. Докладніше про всі параметри описано в офіційній документації кодексу WP. Хочу лише звернути увагу на наступне.

  1. Параметр "label_count" має вказуватись через функцію "_n_noop()"
  2. Засмучує те, що власні статуси для записів автоматично не відображаються на сторінці створення/редагування запису та у таблиці зі списком записів (при наведенні на назву запису, кнопка властивості).

register_post_status('OUTSIDE', array(
	'label' => 'Поза категоріями',
	'label_count' => _n_noop('Поза категоріями <span class="count">(%s)</span>', 'Поза категоріями <span class="count">(%s)</span>'),
	'public'			=> true,
	'internal'			=> true,
	'exclude_from_search'		=> true,
	'show_in_admin_all_list'	=> true,
	'show_in_admin_status_list'	=> true,
));

Для цього довелося використати "костиль", знайдений у просторах інтернету. А саме:

/* Виклик йде у конструкторі класу */
add_action('admin_footer-post.php', array($this, 'admin_footer_post')));
add_action('admin_footer-post-new.php', array($this, 'admin_footer_post')));
add_action('admin_footer-edit.php', array($this, 'admin_footer_edit'))

/* Просто методи класу */

/** 
* @hook 
* - admin_footer-post.php 
* - admin_footer-post-new.php 
*/
public function admin_footer_post()
{ 
if(get_current_screen() -> post_type == 'ya-catalog'): 
?> 
<script> 
jQuery(document).ready(function() 
{ 
jQuery('select[name="post_status"]').append('<option value="OUTSIDE">Поза категоріями</option>'); 
}); 
</script> 
<?php 
endif;
}

/** 
* @hook admin_footer-edit.php 
*/
public function admin_footer_edit()
{ 
if(get_current_screen() -> post_type == 'ya-catalog'): 
?> 
<script> 
jQuery(document).ready(function() 
{ 
jQuery('select[name="_status"]').append('<option value="OUTSIDE">Поза категоріями</option>'); 
}); 
</script> 
<?php 
endif;
}

Рішення не найелегантніше, але це все ж краще, ніж нічого.

Пости на схожі теми

З вашим WordPress сайтом проблеми? потрібний додатковий функціонал? нестандартний плагін чи згорнути нову сторінку?
Тоді напишіть мені через форму зворотного зв'язку, і я намагатимусь вам допомогти.

Напишіть коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *