Для чого потрібні власні кастомні статуси? Варіантів, як завжди, багато. Я використовував їх лише один раз — позначав таким чином товари, які не потрапили ні в одну з категорій під час імпорту з маркету Яндекса.
Нижче наведено приклад створення власного кастомного статусу для запису. Докладніше про всі параметри описано в офіційній документації кодексу WP. Хочу лише звернути увагу на наступне.
- Параметр "label_count" має вказуватись через функцію "_n_noop()"
- Засмучує те, що власні статуси для записів автоматично не відображаються на сторінці створення/редагування запису та у таблиці зі списком записів (при наведенні на назву запису, кнопка властивості).
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;
}Рішення не найелегантніше, але це все ж краще, ніж нічого.
