Wie füge ich ein Standardelement zu einer benutzerdefinierten Taxonomie hinzu?

Die Standardtaxonomie von WordPress (Kategorien) enthält standardmäßig den Eintrag Nicht kategorisiert. Wie Hinzufügen eines Standardelements zu einer neuen benutzerdefinierten Taxonomie?

functionen.php:

// === CUSTOM TAXONOMIES === // function my_custom_taxonomies() { register_taxonomy( 'block', // internal name = machine-readable taxonomy name 'static_content', // object type = post, page, link, or custom post-type array( 'hierarchical' => true, 'labels' => array( 'name' => __( 'Blocks' ), 'singular_name' => __( 'Block' ), 'add_new_item' => 'Add New Block', 'edit_item' => 'Edit Block', 'new_item' => 'New Block', 'search_items' => 'Search Block', 'not_found' => 'No Block found', 'not_found_in_trash' => 'No Block found in trash', ), 'query_var' => true, // enable taxonomy-specific querying 'rewrite' => array( 'slug' => 'block' ), // pretty permalinks for your taxonomy? ) ); } add_action('init', 'my_custom_taxonomies', 0); 

EDIT: Ich möchte nur die Taxonomie-Artikel dort, wenn das Thema installiert ist. Es muss nicht automatisch zu einem leeren Term hinzugefügt werden .

Solutions Collecting From Web of "Wie füge ich ein Standardelement zu einer benutzerdefinierten Taxonomie hinzu?"

Schau mal hier:

https://web.archive.org/web/20150403012347/http://wordpress.mfields.org/2010/set-default-terms-for-your-custom-taxonomies-in-wordpress-3-0/

Grundsätzlich müssen Sie den save_post-Hook verwenden, um die Bedingungen für den Post zu überprüfen und den Standardterm aus Ihrer Taxonomie hinzuzufügen, wenn dieser leer ist.

Wenn Sie nur einen ersten Ausdruck in Ihrer benutzerdefinierten Taxonomie festlegen möchten, können Sie wp_insert_term() . Wahrscheinlich am einfachsten, es in derselben function hinzuzufügen, die Sie verwenden, um Ihre benutzerdefinierte Taxonomie zu erstellen. Wie t3ios in den Kommentaren hinzufügt, sollten get_term() zuerst get_term() aufrufen und nur den Ausdruck einfügen, wenn der Rückgabewert null ist (dh der Begriff existiert nicht).

Dieser Beispielcode stammt aus dem Codex: http://codex.wordpress.org/Function_Reference/wp_insert_term

 $parent_term = term_exists( 'fruits', 'product' ); // array is returned if taxonomy is given $parent_term_id = $parent_term['term_id']; // get numeric term id wp_insert_term( 'Apple', // the term 'product', // the taxonomy array( 'description'=> 'A yummy apple.' 'slug' => 'apple' 'parent'=> $parent_term_id ) ); 

Die Standardkategorie ist in der function wp_insert_post() .

Es kann also nicht genau repliziert werden, aber Sie können es auf andere Weise handhaben. Ich würde versuchen, den Post-Status-Übergang für neue Posts einzubinden und den gewünschten Standard-Term zuzuordnen, wenn bei der Post-Erstellung keins zugewiesen wurde.

Ich musste eine Custom Taxonomy “Days” mit den Wochentagen füllen. Ich wollte nicht, dass der Client sich mit der Erstellung von Tagen herumschlagen musste, oder da hinein gehen und Tage oder falsch geschriebene Tage löschen musste. Dem obigen Rat folgend, kam ich auf dieses Problem, aber ich frage mich, ob es eine prägnantere Art der Kodierung gibt:

  /*************************************** ...Create a Custom Taxonomy for days ******************************/ add_action( 'init', 'build_taxonomies', 0 ); function build_taxonomies() { register_taxonomy( 'days', 'schedule', array( 'hierarchical' => true, 'label' => 'Days', 'query_var' => true, 'show_ui' => false, //removes the menus from admin menu and edit panel 'rewrite' => true ) ); /*---------------------------------------Check to see if the days are created..if not, create them----*/ $parent_term = term_exists( 'days', 'days' ); // array is returned if taxonomy is given $parent_term_id = $parent_term['term_id']; // get numeric term id wp_insert_term( //this should probably be an array, but I kept getting errors.. 'Monday', // the term 'days', // the taxonomy array( 'slug' => 'monday', 'parent'=> $parent_term_id )); wp_insert_term( 'Tuesday', // the term 'days', // the taxonomy array( 'slug' => 'tuesday', 'parent'=> $parent_term_id )); wp_insert_term( 'Wednesday', // the term 'days', // the taxonomy array( 'slug' => 'wednesday', 'parent'=> $parent_term_id )); wp_insert_term( 'Thursday', // the term 'days', // the taxonomy array( 'slug' => 'thursday', 'parent'=> $parent_term_id )); wp_insert_term( 'Friday', // the term 'days', // the taxonomy array( 'slug' => 'friday', 'parent'=> $parent_term_id )); wp_insert_term( 'Saturday', // the term 'days', // the taxonomy array( 'slug' => 'saturday', 'parent'=> $parent_term_id )); wp_insert_term( 'Sunday', // the term 'days', // the taxonomy array( 'slug' => 'sunday', 'parent'=> $parent_term_id )); } /************ now I add my own meta box for days to get rid of extra controls *************/ add_action('admin_menu', 'add_custom_categories_box'); function add_custom_categories_box() { add_meta_box('myrelateddiv', 'Days*', 'ilc_post_related_meta_box', 'schedule', 'normal', 'low', array( 'taxonomy' => 'days' )); } function ilc_post_related_meta_box( $post, $box ) { $defaults = array('taxonomy' => 'related'); if ( !isset($box['args']) || !is_array($box['args']) ) $args = array(); else $args = $box['args']; extract( wp_parse_args($args, $defaults), EXTR_SKIP ); $tax = get_taxonomy($taxonomy); ?> 
    < ?php wp_terms_checklist($post->ID, array( 'taxonomy' => $taxonomy, 'popular_cats' => $popular_ids, 'checked_ontop' => FALSE ) ) ?>

Mit dem Standard-Term- Plugin können Sie dies tun

 register_taxonomy( 'custom-tax', array('post'), array( 'label' => 'Custom Tag', 'public' => true, 'show_ui' => true, 'default_term' => 'Some Default Term', // Add this line to your code // then activate and deactivate the default term plugin to save the terms you set. )); 

Wenn der Beitrag gesendet wird, wird standardmäßig der Standardbegriff im Beitrag gespeichert, wenn kein Begriff aktiviert ist. Es funktioniert sowohl für hierarchische als auch für nicht-hierarchische Taxonomien.