WordPress как на ладони
Шаблоны, плагины и темы для настоящих поклонников Elementor. От TemplateMonster.com wordpress jino

register_post_type_args хук-фильтр . WP 4.4.0

Позволяет изменить параметры, переданные функции register_post_type при регистрации любого типа записи. Срабатывает до того, как сформированы дефолтные параметры, соединены с передаваемыми и применены.

Со всеми параметрами, которые проходят через хук-фильтр register_post_type_args можно ознакомиться на странице функции register_post_type.

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

add_filter( 'register_post_type_args', 'filter_function_name_8795', 10, 2 );
function filter_function_name_8795( $args, $post_type ){
	// Фильтруем...

	return $args;
}
$args(массив)
Параметры, переданные функции register_post_type() вторым аргументом для регистрации нового типа поста.
$post_type(строка)
Название типа записи, указываемое первым аргументом функции register_post_type(), например post, page, product и так далее.

Примеры

#1 Изменим текст "Записи" на "Новости"

Простой пример, как "Записи" в админ-сайдбаре и админ-баре заменить на "Новости".

add_filter( 'register_post_type_args', 'filter_register_post_type_args', 10, 2 );

function filter_register_post_type_args( $args, $post_type ) {

	if ( 'post' == $post_type ) {
		$args['labels'] = [
			'name'          => 'Новости',
			'singular_name' => 'Новость',
		];
	}

	return $args;
}

Так как здесь изменяются только лейблы, то подобную задачу оптимальнее решить через специальный хук-фильтр post_type_labels_(post_type). Хороший полноценный пример смотрите здесь.

#2 Изменим REST маршрут у Записей

По умолчанию Записи для REST запросов доступны по адресу:

http://example.com/wp-json/wp/v2/post

Если Записи используются для публикации Новостей, то логично сделать и REST маршрут соответствующий, например:

http://example.com/wp-json/wp/v2/news

Для этого нужно изменить параметр rest_base при регистрации типа поста "Записи":

add_filter( 'register_post_type_args', 'change_rest_base_posts', 10, 2 );

function change_rest_base_posts( $args, $post_type ) {
	if ( 'post' == $post_type ) {
		$args['rest_base'] = 'news';
	}

	return $args;
}

Где используется хук

Код хука-фильтра register_post_type_args

Фрагмент из: wp-includes/class-wp-post-type.php VER 4.9.8
...
	 * @since 4.6.0
	 *
	 * @param array|string $args Array or string of arguments for registering a post type.
	 */
	public function set_props( $args ) {
		$args = wp_parse_args( $args );

		/**
		 * Filters the arguments for registering a post type.
		 *
		 * @since 4.4.0
		 *
		 * @param array  $args      Array of arguments for registering a post type.
		 * @param string $post_type Post type key.
		 */
		$args = apply_filters( 'register_post_type_args', $args, $this->name );

		$has_edit_link = ! empty( $args['_edit_link'] );

		// Args prefixed with an underscore are reserved for internal use.
		$defaults = array(
			'labels'                => array(),
			'description'           => '',
			'public'                => false,
			'hierarchical'          => false,
			'exclude_from_search'   => null,
			'publicly_queryable'    => null,
			'show_ui'               => null,
			'show_in_menu'          => null,
			'show_in_nav_menus'     => null,
			'show_in_admin_bar'     => null,
...
campusboy 2989youtube.com/c/wpplus
Создатель YouTube канала wp-plus, на котором делюсь своим опытом. Активный пользователь wp-kama.ru. WordPress-разработчик. Разработка сайтов и лендингов. Доработка существующих проектов. Сопровождение ресурсов.
Редакторы: Kama 6810
Комментариев нет
    Здравствуйте, !     Войти . Зарегистрироваться