Как изменить параметры уже зарегистрированного типа записи

Недавно я столкнулся с такой ситуацией, что я использовал функцию get_post_types() со следующим набором параметров:

$post_types = get_post_types( array( 'public' => true ) );

Однако эта функция не возвращала мне все типы записей, которые были доступны в админке! Почему? А потому что при регистрации типа записи параметр public был установлен в значение false, но при этом такие параметры, как show_ui и show_in_menu – true.

Ну а суть в том, что get_post_types() не позволяет задать ИЛИ-условия, и как же мне получить все типы записей, которые мне нужны? Единственным логичным вариантом кажется изменение параметров типа записи при его регистрации, то есть вернуть ему public => true. А как сделать это для уже зарегистрированного типа записи? Хук register_post_type_args отлично для этого подойдёт!

Пример с параметром public:

add_filter( 'register_post_type_args', 'true_cpt_args', 10, 2 );
 
function true_cpt_args( $args, $post_type ) {
 
	if( $post_type !== 'НАЗВАНИЕ ТИПА ЗАПИСИ' ) {
		return $args;
	}
 
	$args[ 'public' ] = true;
	return $args;
 
}

Не забывайте про условие, которое находится на 5-й строчке, иначе мы просто изменим параметр для всех существующих типов записей. Конечно, вы можете попробовать это сделать, если будет желание устроить на сайте небольшой коллапс.

Миша

Впервые познакомился с WordPress в 2009 году. Организатор и спикер на конференциях WordCamp. Преподаватель в школе Нетология.

Пишите, если нужна помощь с сайтом или разработка с нуля.

Чтобы оставить комментарий, пожалуйста, зарегистрируйтесь или войдите.

Миша Рудрастых и WordPress

Полезности из мира WordPress и жизни студии.

Мой телеграм-канал