register_post_status() WP 3.0.0

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

Ця функція повинна викликатися під час або після події 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

#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. stdClass[]. $wp_post_statuses Inserts New post status object into the list

список змін

З версії 3.0.0Введено.

Код register_post_status() WP 6.0.2

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 underscore є для зовнішнього використання.
	$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;
}

Залишити відповідь

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