Hinzufügen von Taxonomiebegriffen basierend auf benutzerdefiniertem Feld

Ich habe einen benutzerdefinierten Post-Typ, den ich einrichte, sodass verschiedene Sätze von benutzerdefinierten Feldern basierend auf dem Post-Typ angezeigt werden. Es ist eines von dreien (Sammlung, Produkt oder Variante).

Ich habe alles in dieser Hinsicht eingerichtet, aber ich denke, dass wenn ich meine Vorlagen entwerfe, um verschiedene Daten abhängig vom Eingabetyp anzuzeigen, es einfacher sein könnte, es zu tun, wenn ich den Eingabetyp als eine Taxonomie definiert hätte.

Daher möchte ich meinen Beitrag mit der entsprechenden Taxonomie aktualisieren, die sich auf den Eingabetyp bezieht.

Ich habe mir das ausgedacht, aber es ist nicht der Trick.

Um zu klären, meine Taxonomie:

function set_tax_terms() { global $wpdb; $post_id = $wpdb->get_results ('SELECT ID FROM wp_hyhg_posts WHERE post_type = uc-collections' , object); foreach ($post_id as $id) { //get the input_type meta $term= get_post_meta( $id, 'input_type', true ); //get the term id that matches the input type $term_id = term_exists( $term, 'input' ); //set the post term based on above results wp_set_post_terms( $id, $term_id, 'input', true ); } } set_tax_terms(); 

Irgendwelche Ideen?

Basierend auf einem anderen Beitrag habe ich diese Methode auch ohne Erfolg ausprobiert. (Ich setze diesen Code in ein Snippet-Plugin, damit ich es einfach aktivieren und deaktivieren kann.)

 function set_tax_terms() { $args = array('post_type' =>'uc-collections'); $post_id=get_post( $args ); if($post_id) { foreach ($post_id as $id) { //get the input_type meta $term= get_post_meta( $id->ID, 'input_type', true ); //get the term id that matches the input type if(!empty($term)) { $term_id = term_exists( $term, 'input' ); //set the post term based on above results wp_set_post_terms( $id->ID, $term_id, 'input', true ); } } } } set_tax_terms(); 

Aus irgendeinem Grund bekomme ich den unten eingerichteten Code nicht zum funktionieren. Also versuche ich herauszufinden, wie die Dinge in der database zusammenhängen.

In der Begriffstabelle: meine term_id / slug-Beziehung für die fraglichen Artikel sind: 57 / Sammlung, 58 / Produkt, 59 / Variante.

Dies würde ich annehmen, wäre in der term_relationships-Tabelle, aber das scheint nicht der Fall zu sein.

Ich sehe object_id und term_taxonomy_id, ein Beispiel ist 3838/67, was einem Post, für den ich einen Begriff definiert habe, und der term_taxonomy-Tabelle entspricht. Ich sehe, dass es eine term_taxonomy_id und dann term_id als 67/59 gibt, was meine Variantenauswahl wäre.

Ich bin mir nicht sicher, warum es in diesem Fall zwei verschiedene Zahlen gibt. Ich weiß nicht, warum das nicht funktionieren will. Ich schätze, ich werde es manuell machen.

Solutions Collecting From Web of "Hinzufügen von Taxonomiebegriffen basierend auf benutzerdefiniertem Feld"

Sie sollten nur Folgendes tun können:

Nur ein paar Dinge zu beachten:

  • Wenn Sie get_term_by() anstelle von term_exists() , treffen Sie bei jedem Abruf des term_exists() anstelle der database.
 /** * Set terms for the given post type based on a meta value. */ function wpdocs_set_terms_for_post_types() { $posts = get_posts( array( 'posts_per_page' => -1, 'post_type' => 'uc-collections', ) ); if ( ! empty( $posts ) ) { foreach ( $posts as $post ) { if ( $meta = get_post_meta( $post->ID, 'input_type', true ) { if ( is_string( $meta ) && $term = get_term_by( 'slug', strtolower( $meta ) ) ) { wp_set_post_terms( $post->ID, $term->slug, 'input' ); } } } } } wpdocs_set_terms_for_post_types();