register_post_status

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

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

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

Хуков нет.

Возвращает

Массив аргументов.

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

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

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

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

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

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

$args(строка/массив)
Массив аргументов статуса поста.
По умолчанию: нет

Аргументы параметра $args

label(строка)
Описывающее название для статуса поста, предназначенное для перевода.
По умолчанию: $post_status
public(логический)
Показывать ли посты с этим статусом в лицевой части сайта. true – показывать.
По умолчанию: null
exclude_from_search(логический)
Исключить ли посты с этим статусом из результатов поиска. true – исключить.
По умолчанию: null
show_in_admin_all_list(логический)
Включить ли записи с этим статусом в список записей в админ-панели для. true – включить.
По умолчанию: null
show_in_admin_status_list(логический)

Показывать ли статус в списке статусов вверху таблицы постов:

status-in-head

По умолчанию: null

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

Так выглядит массив всех параметров со значениями по умолчанию:

    // 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,
	);

Примеры

#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>' ),
	) );
}

Код из


wp-includes/post.php

WP 4.7.2

<?php
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,
	);
	$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 ( false === $args->label )
		$args->label = $post_status;

	if ( false === $args->label_count )
		$args->label_count = array( $args->label, $args->label );

	$wp_post_statuses[$post_status] = $args;

	return $args;
}

Комментарии:


Оставить комментарий

Your email address will not be published. Required fields are marked *