Wie legt man die Taxonomie im benutzerdefinierten Plugin fest?

Ich versuche ein Plugin zu erstellen, ich brauche einen benutzerdefinierten Post und Taxonomie. Aber es kann in der Admin-Seite zugänglich sein, aber die Taxonomie funktioniert nicht am Front-End.

So habe ich den benutzerdefinierten Beitrag und die Taxonomie registriert:

function post_type_questionnaire() { $labels = array( 'name' => _x('Questionnaire', 'post type general name'), 'singular_name' => _x('Questionnaire', 'post type singular name'), 'add_new' => _x('Add New Question', 'questionnaire'), 'add_new_item' => __('Add New Questionnaire') ); $args = array( 'labels' => $labels, 'public' => true, 'publicly_queryable' => true, 'show_ui' => true, 'query_var' => true, 'rewrite' => true, '_builtin' => false, // It's a custom post type, not built in! 'capability_type' => 'post', 'hierarchical' => false, 'menu_position' => null, 'supports' => array('title', //'editor', /*'excerpt', 'thumbnail', 'trackbacks', 'custom-fields', 'comments', 'revisions', 'author', 'page-attributes'*/ )); register_post_type('questionnaire',$args); } add_action('init', 'post_type_questionnaire'); function create_questionnaire_taxanomies(){ register_taxonomy('qcategories','questionnaire', array( 'hierarchical'=>true, 'label'=>'Questionnaire Categories', 'rewrite' => array( 'slug' => 'questionnaire' ) )); } add_action('init', 'create_questionnaire_taxanomies',0); 

Ich verwende einen Shortcode, um es im Frontend anzuzeigen.

Mit dem folgenden Code werden alle Beiträge angezeigt

  $args = array( 'post_type' => 'questionnaire', 'posts_per_page' => -1, ); $query = new WP_Query($args); if ( $query->have_posts() ) { ?> have_posts() ) :query->the_post(); ?> 

Aber wenn ich versuche, einen Taxonomie Begriff zu spezifizieren, funktioniert es nicht und das ist der Code:

  $args = array( 'post_type' => 'questionnaire', 'posts_per_page' => -1, 'tax_query' => array( array( 'taxonomy' => 'qcategories', 'field' => 'slug', 'terms' => $atts["name"] ) ) ); $query = new WP_Query($args); if ( $query->have_posts() ) { ?> have_posts() ) : $query->the_post(); ?> 

Als ich versuchte, die Anzahl der Posts in einer Template-Seite anzuzeigen, wurde nichts angezeigt:

  $term = get_term( 3, 'qcategories' ); echo $term->count; 

Dies gibt nichts aus, also glaube ich, dass die Taxonomie nicht registriert wird, kann mir jemand helfen, die Taxonomie in meinem benutzerdefinierten Plugin zu registrieren. Danke im Voraus!

Solutions Collecting From Web of "Wie legt man die Taxonomie im benutzerdefinierten Plugin fest?"

Möglicherweise müssen Sie Ihre Permalinks erneut speichern. Drücke einfach die Save-Taste in den Permalink-Einstellungen: /wp-admin/options-permalink.php

Ansonsten funktioniert Ihr Code nach dem Bereinigen nur ein paar Tipperrors:

 function post_type_questionnaire() { $labels = array( 'name' => _x('Questionnaire', 'post type general name'), 'singular_name' => _x('Questionnaire', 'post type singular name'), 'add_new' => _x('Add New Question', 'questionnaire'), 'add_new_item' => __('Add New Questionnaire') ); $args = array( 'labels' => $labels, 'public' => true, 'publicly_queryable' => true, 'show_ui' => true, 'query_var' => true, 'rewrite' => false, '_builtin' => false, // It's a custom post type, not built in! 'capability_type' => 'post', 'hierarchical' => false, 'menu_position' => null, 'supports' => array( 'title', //'editor', /*'excerpt', 'thumbnail', 'trackbacks', 'custom-fields', 'comments', 'revisions', 'author', 'page-attributes'*/ )); register_post_type('questionnaire',$args); } add_action('init', 'post_type_questionnaire'); function create_questionnaire_taxanomies(){ register_taxonomy('qcategories','questionnaire', array( 'hierarchical'=>true, 'label'=>'Questionnaire Categories', 'rewrite' => array( 'slug' => 'questionnaire' ) )); } add_action('init', 'create_questionnaire_taxanomies',0); 

Dieser Vorlagencode hatte ein paar Tipperrors, aber es hätte einen Fehler ausgetriggers:

 $atts["name"] = 'stackexchange'; $args = array( 'post_type' => 'questionnaire', 'posts_per_page' => -1, 'tax_query' => array( array( 'taxonomy' => 'qcategories', 'field' => 'slug', 'terms' => $atts["name"] ) ) ); $query = new WP_Query($args); if ( $query->have_posts() ) { ?> < ?php while ( $query->have_posts() ) : $query->the_post(); ?> < ?php the_title(); ?> < ?php endwhile; ?> < ?php } ?>