Intereting Posts
URL-адрес плагина Не работает многопользовательский контроль темы Как добавить элемент управления фонового изображения в элементы управления администратором страницы? Удалять страницу вложений только для аудиоресурсов woocommerce – get_image_size () устарело nginx или cherokee (+ php-fpm) для бэкэнд WordPress? Есть ли способ отключить форматирование ярлыков в 4.3? Создание дочерней страницы WordPress из действий страницы Есть ли способ проверить, успешно ли запущена функция, работающая только с обновлением плагина? Пользовательский тип сообщения has_archive Отображение уведомлений при активации плагина Неустранимая ошибка: вызов неопределенной функции get_users () Примечание. Константа XYZ, уже определенная в wp-config.php, на линии, которая не существует Найти первое изображение в paginated post для Pinterest Кэширование WordPress – API переходных процессов или «update_user_meta» Cronjob?

Получить список всех зарегистрированных типов сообщений

Я хотел бы получить список (массив) всех типов сообщений, которые я зарегистрировал.

Точно я хотел бы получить их слизняков.

Может кто-нибудь мне помочь? благодаря!

Solutions Collecting From Web of "Получить список всех зарегистрированных типов сообщений"

@ Ответ EAMann верен, но уже есть функция WordPress для извлечения всех зарегистрированных типов сообщений: get_post_types

 <?php // hook into init late, so everything is registered // you can also use get_post_types where ever. Any time after init is usually fine. add_action( 'init', 'wpse34410_init', 0, 99 ); function wpse34410_init() { // types will be a list of the post type names $types = get_post_types(); // get the registered data about each post type with get_post_type_object foreach( $types as $type ) { $typeobj = get_post_type_object( $type ); // need the actual slug? this will do it... if( isset( $typeobj->rewrite->slug ) ) { // you'll probably want to do something else. echo $typeobj->rewrite->slug; } } } 

Когда вы вызываете register_post_type() , он добавляет ваш новый тип сообщения к глобальной переменной с именем $wp_post_types . Таким образом, вы можете получить список всех ваших типов сообщений:

 function get_registered_post_types() { global $wp_post_types; return array_keys( $wp_post_types ); } 

$wp_post_types представляет собой массив, содержащий определения CPT, с каждым набором аргументов CPT (метки, возможности и т. Д.), $wp_post_types CPT. Вызов array_keys() даст вам массив пули ваших CPT.

Самый простой способ – использовать функцию WordPress get_post_types ();

 <?php $get_cpt_args = array( 'public' => true, '_builtin' => false ); $post_types = get_post_types( $get_cpt_args, 'object' ); // use 'names' if you want to get only name of the post type. // see the registered post types echo '<pre>'; print_r($post_types); echo '</pre>'; // do something with array if ( $post_types ) { foreach ( $post_types as $cpt_key => $cpt_val ) { // do something. } } ?> 

Более элегантное решение:

 <?php $cpt_args = [ 'public' => true, '_builtin' => false ]; $type_slugs = array_map( function( $type ) { return $type->slug; }, get_post_types( $cpt_args, 'objects' ) );