Intereting Posts
Добавление метабокса на конкретную страницу подменю Передача чисел и букв в строках запроса Силовой язык в функции перевода После миграции из dev только мои ссылки на главную страницу по-прежнему перенаправляются на dev Перенаправление старого домена с cat = в url перенаправляет меня на страницу без рубрики Следующая / предыдущая связь не отображается с сообщениями 2 Сообщения Возврат из wooCommerce с помощью полосы Использование короткого кода аудио для .mp3 URL-адресов с строкой запроса Потяните в пользовательские типы контента в шаблон страницы Локальная ошибка Multisite Redirect add_external_rule – правила удаляются при посещении страницы постоянных ссылок URL-адрес WordPress Ajax для функции в functions.php Сценарии WordPress загружаются в нижний колонтитул Пользовательские соглашения / реестр имен, для ссылок в социальных сетях Как сделать пользовательскую страницу WordPress доставлять результаты поиска

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

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

$postargs = array( 'public' => true, '_builtin' => false ); $postoutput = 'names'; $postoperator = 'and'; $post_types = get_post_types( $postargs, 'names', 'and' ); /// Main Loop Start foreach ($post_types as $post_type){ //and then i want to Get all the Custom Taxonomies for those post types in a loop $taxonomies = get_object_taxonomies('$post_type', 'objects'); // Loop foreach ($taxonomies as $taxonomy){ // Do Stuff with taxonomy } // Loop } /// Main Loop Ends 

Но проблема в том, что только сообщения WordPress Posts появляются, если я это сделаю

 '_builtin' => true 
  • после
  • страница
  • прикрепление

прикрепление

Это код для зарегистрированного типа сообщения. Я не получаю никакого типа сообщения, в настоящее время у меня есть 8 пользовательских типов сообщений в теме. сообщение зарегистрировано с помощью этого кода …

 $args = array( 'labels' => array( 'name' => __( 'Faq', 'yit' ), 'singular_name' => __( 'Faq', 'yit' ), 'plural_name' => __( 'Faqs', 'yit' ), 'item_name_sing' => __( 'Faq', 'yit' ), 'item_name_plur' => __( 'Faqs', 'yit' ), 'add_new' => __( 'Add New Faq', 'yit' ), 'add_new_item' => __( 'Add New Faq', 'yit' ), 'edit' => __( 'Edit', 'yit' ), 'edit_item' => __( 'Edit Faq', 'yit' ), 'new_item' => __( 'New Faq', 'yit' ), 'view' => __( 'View Faq', 'yit' ), 'view_item' => __( 'View Faq', 'yit' ), 'search_items' => __( 'Search Faqs', 'yit' ), 'not_found' => __( 'No Faqs', 'yit' ), 'not_found_in_trash' => __( 'No Faqs in the Trash', 'yit' ), ), 'hierarchical' => false, 'public' => true, //'menu_position' => 30, //'icon_menu' => , 'has_archive' => 'faq', 'rewrite' => array( 'slug' => apply_filters( 'yit_faqs_rewrite', 'faq' ) ), 'supports' => array( 'title', 'editor', 'cats'), 'description' => "Faq" ); register_post_type('faq', $args); 

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

Попробуйте этот (протестированный) код ниже. Я считаю, что проблема заключалась в передаче параметра $post_type для get_object_taxonomies (т. get_object_taxonomies Вы передали его в кавычки как '$post_type' . Если раскомментировать два параметра var_dump , вы увидите, какая информация выводится.

 <?php $postargs = array( 'public' => true, '_builtin' => false ); $post_types = get_post_types( $postargs, 'names', 'and' ); // Main Loop Start foreach ($post_types as $post_type){ //var_dump($post_type); $taxonomies = get_object_taxonomies($post_type, 'objects'); foreach ($taxonomies as $taxonomy){ //var_dump($taxonomy); // Do Stuff with taxonomy here }//foreach taxonomy }//foreach post_type ?> 

Примечание. Я тестировал это с настраиваемыми типами сообщений, зарегистрированными по теме, но не с пользовательскими типами сообщений, зарегистрированными плагинами, но это должно работать и для тех,

Хорошо, я обнаружил, что проблема заключалась в том, что var_dump был выполнен до того, как wordpress получит любой зарегистрированный тип сообщения. поэтому я добавил 199 в свой приоритет, и он сработал. 🙂 Спасибо за вашу помощь…

 function test(){ var_dump( get_post_types(array('_builtin' => false))); } add_action ('admin_init','test', 199); 

Я обнаружил, что проблема заключается не в использовании функции get_post_types , а в том, где мы называем эту функцию. Я опишу это, ясно.

Создайте функцию:

 function get_all_custom_post_types() { $args = array( 'public' => true, '_builtin' => false ); $output = 'objects'; //'names'; // names or objects, note names is the default $operator = 'and'; // 'and' or 'or' $custom_post_types = get_post_types( $args, $output, $operator ); $post_types = array(); foreach ( $custom_post_types as $k => $post_type ) { $post_types = $post_type; } return $post_types ; } 

Используйте эту настраиваемую функцию, где вы хотите ее вызывать, но используйте только в любом действии WordPress или функции обратного вызова фильтра, например, при создании функции обратного вызова для действия add_metabox , затем вызывайте эту функцию:

 add_action( 'add_meta_boxes', 'add_mb_option' ); function add_mb_option() { add_meta_box( 'mb-option', 'custom metabox detail', 'add_mb_option_element', 'custom_metabox', 'normal', 'high' ); } function add_mb_option_element() { $cpts = get_all_custom_post_types(); // More custom code will go here } 

Очень прост в использовании.