Недавно я столкнулся с такой ситуацией, что я использовал функцию 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-й строчке, иначе мы просто изменим параметр для всех существующих типов записей. Конечно, вы можете попробовать это сделать, если будет желание устроить на сайте небольшой коллапс.
Чтобы оставить комментарий, пожалуйста, зарегистрируйтесь или войдите.