Erhalten Sie registrierten benutzerdefinierten Post-Typ, um alle benutzerdefinierten Taxonomien zu erhalten

Ich versuche, alle benutzerdefinierten Post-Typen entweder nach Thema oder Plugin registriert, aber keine Methode funktioniert.

$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 

Aber das Problem ist nur WordPress Defaults Post-Typen werden angezeigt, wenn ich es tue

 '_builtin' => true 
  • Post
  • Seite
  • Befestigung

Befestigung

Dies ist der Code für den registrierten Post-Typ Ich bekomme keinen Post-Typ, ich habe derzeit 8 benutzerdefinierte Post-Typen im Theme. Der Beitrag ist mit diesem Code registriert …

 $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 "Erhalten Sie registrierten benutzerdefinierten Post-Typ, um alle benutzerdefinierten Taxonomien zu erhalten"

Versuchen Sie diesen (getesteten) Code unten. Ich glaube, das Problem war die Übergabe des Parameters $post_type an get_object_taxonomies (dh Sie haben es in Anführungszeichen als '$post_type' . Wenn Sie die beiden var_dump , sehen Sie, welche Informationen ausgegeben werden.

 < ?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 ?> 

Hinweis: Ich habe dies mit benutzerdefinierten Post-Typen getestet, die von einem Theme registriert wurden, aber nicht mit benutzerdefinierten Post-Typen, die von Plugins registriert wurden, aber dies sollte auch für diese funktionieren

Okay, ich habe das Problem gefunden, dass var_dump ausgeführt wurde, bevor WordPress zu einem registrierten Posttyp gelangt. Also habe ich 199 in seiner Priorität hinzugefügt und es hat funktioniert. 🙂 Danke euch allen für eure Hilfe …

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

Ich fand das Problem nicht mit der function get_post_types , sondern mit dieser function. Ich werde es klar beschreiben.

Erstellen Sie eine function:

 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 ; } 

Verwenden Sie diese benutzerdefinierte function, an der Sie dies aufrufen möchten, aber nur in einer beliebigen WordPress-Aktion oder Filterrückruffunktion, z. B. beim Erstellen einer callbackfunktion für add_metabox Aktion add_metabox , und rufen Sie dann diese function auf:

 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 } 

Sehr einfach zu bedienen.