WordPress как на ладони
Недорогой хостинг для сайтов на WordPress: wordpress.jino.ru

register_post_status() WP 3.0

Функция для создания нового или редактирования старого статуса поста, на основе переданных параметров.

Ищем WP-разработчика! Фулл-тайм, удаленка, хорошая зарплата, соц. пакет. Подробности.
Компания Boosta.

Эта функция должна вызываться во время или после события init.

Эта функция не добавляет новый зарегистрированный статус записи в админ-панель. Функция в процессе разработки.

Используйте get_post_status_object(), чтобы получить данные зарегистрированного статуса.

post_status должен быть не более 20 символов! Такое ограничение установлено в БД для поля post_status. Если указать строку длиннее, то все лишнее будет обрезано. См. схему таблицы wp_posts.

Основа для: create_initial_post_types()

Хуков нет.

Возвращает

Объект.

Использование

register_post_status( $post_status, $args );
$post_status(строка) (обязательный)

Название статуса поста.

Статусы уже зарегистрированные в WP:

  • publish - опубликованный пост;
  • inherit - ревизия;
  • pending - на проверке;
  • private - личная запись (доступна только автору);
  • future - публикация в будущем;
  • draft - черновик;
  • trash - запись находится в корзине.

По умолчанию: нет

$args(строка/массив)

Массив аргументов статуса поста. По умолчанию:

// Аргументы с начальным _ зарезервированы для внутреннего использования.
$defaults = array(
	'label'                     => false,
	'label_count'               => false,
	'exclude_from_search'       => null,
	'_builtin'                  => false,
	'public'                    => null,
	'internal'                  => null,
	'protected'                 => null,
	'private'                   => null,
	'publicly_queryable'        => null,
	'show_in_admin_status_list' => null,
	'show_in_admin_all_list'    => null,
);
  • label(строка)
    Описывающее название для статуса поста, предназначенное для перевода.
    По умолчанию: $post_status

  • label_count(строка)
    Текст отображаемый в консоли админ панели (если вы не хотите количество записей с этим статусом).
    По умолчанию: false

  • exclude_from_search(логический)
    Исключить ли посты с этим статусом из результатов поиска. true - исключить.
    По умолчанию: значение $internal

  • public(логический)
    Показывать ли посты с этим статусом в лицевой части сайта. true - показывать.
    По умолчанию: null

  • $internal(true/false)
    Статус предназначен только для внутреннего использования.
    Default: false

  • $protected(true/false)
    Должен ли быть пост с этим статусом защищенным (protected)?
    Default: false

  • $private(true/false)
    Должен ли быть пост с этим статусом приватным?
    Default: false

  • $publicly_queryable(true/false)
    Должен ли пост с этим статусом участвовать в публичных запросах?
    Default: значение $public

  • show_in_admin_all_list(логический)
    Включить ли записи с этим статусом в список записей в админ-панели для. true - включить.
    По умолчанию: значение $internal

  • show_in_admin_status_list(логический)
    Показывать ли статус в списке статусов вверху таблицы постов:

    status-in-head

    По умолчанию: значение $internal

  • $_builtin(true/false)
    Является ли статус встроенным. Только для использования ядром.
    Default: false

Примеры

#1. Пример регистрации статуса поста под названием Unread:

add_action( 'init', 'my_custom_post_status' );
function my_custom_post_status(){
	register_post_status( 'unread', array(
		'label'                     => _x( 'Unread', 'post' ),
		'public'                    => true,
		'exclude_from_search'       => false,
		'show_in_admin_all_list'    => true,
		'show_in_admin_status_list' => true,
		'label_count'               => _n_noop( 'Unread <span class="count">(%s)</span>', 'Unread <span class="count">(%s)</span>' ),
	) );
}

Заметки

  • Global. Массив. $wp_post_statuses Inserts new post status object into the list

Список изменений

С версии 3.0.0 Введена.

Код register_post_status() WP 5.8.1

function register_post_status( $post_status, $args = array() ) {
	global $wp_post_statuses;

	if ( ! is_array( $wp_post_statuses ) ) {
		$wp_post_statuses = array();
	}

	// Args prefixed with an underscore are reserved for internal use.
	$defaults = array(
		'label'                     => false,
		'label_count'               => false,
		'exclude_from_search'       => null,
		'_builtin'                  => false,
		'public'                    => null,
		'internal'                  => null,
		'protected'                 => null,
		'private'                   => null,
		'publicly_queryable'        => null,
		'show_in_admin_status_list' => null,
		'show_in_admin_all_list'    => null,
		'date_floating'             => null,
	);
	$args     = wp_parse_args( $args, $defaults );
	$args     = (object) $args;

	$post_status = sanitize_key( $post_status );
	$args->name  = $post_status;

	// Set various defaults.
	if ( null === $args->public && null === $args->internal && null === $args->protected && null === $args->private ) {
		$args->internal = true;
	}

	if ( null === $args->public ) {
		$args->public = false;
	}

	if ( null === $args->private ) {
		$args->private = false;
	}

	if ( null === $args->protected ) {
		$args->protected = false;
	}

	if ( null === $args->internal ) {
		$args->internal = false;
	}

	if ( null === $args->publicly_queryable ) {
		$args->publicly_queryable = $args->public;
	}

	if ( null === $args->exclude_from_search ) {
		$args->exclude_from_search = $args->internal;
	}

	if ( null === $args->show_in_admin_all_list ) {
		$args->show_in_admin_all_list = ! $args->internal;
	}

	if ( null === $args->show_in_admin_status_list ) {
		$args->show_in_admin_status_list = ! $args->internal;
	}

	if ( null === $args->date_floating ) {
		$args->date_floating = false;
	}

	if ( false === $args->label ) {
		$args->label = $post_status;
	}

	if ( false === $args->label_count ) {
		// phpcs:ignore WordPress.WP.I18n.NonSingularStringLiteralSingle,WordPress.WP.I18n.NonSingularStringLiteralPlural
		$args->label_count = _n_noop( $args->label, $args->label );
	}

	$wp_post_statuses[ $post_status ] = $args;

	return $args;
}

Расширения WP (доп возможности регистрация)

statuses (статус записи коммента юзера)

Записи: посты, страницы, ...

9 комментов
    Войти