wp_insert_post oder wp_set_post_terms speichern keine Taxonomie, aber wp_set_post_terms

Ich habe ein kleines Problem. Ich habe eine benutzerdefinierte Taxonomie “rodzaj” mit einem Wert i.d. obrazek. Ich verwende diesen Code, um einen Beitrag hinzuzufügen:

$postArray = array( 'post_status' => 'publish', 'post_author'=> get_current_user_id(), 'post_category'=>array($catId), 'post_title' => $_POST['titlePhoto'], 'tax_input' => array( 'rodzaj' => array( 'obrazek') ) , ); 

Dieser Code fügt einen Post aber ohne Taxonomie hinzu. Ich habe das auch versucht:

 wp_set_object_terms($postId, "obrazek", 'rodzaj', false); 

functioniert auch nicht.

Arbeitscode ist:

 wp_set_post_terms( $postId, array( 'obrazek'), 'rodzaj' ); 

Warum funktionieren die ersten 2 functionen nicht?

Ich habe am Anfang einen Fehler gemacht. Dies ist vollständiger Arbeitscode:

 $catId = get_cat_ID("Obrazki"); $postArray = array( 'post_status' => 'publish', 'post_author'=> get_current_user_id(), 'post_category'=>array($catId), 'post_title' => $_POST['titlePhoto'], 'tags_input' => explode(',', $_POST['tagsPhoto']) ); $postId = wp_insert_post($postArray); if($postId) { wp_set_object_terms($postId, "obrazek", 'rodzaj', false); } 

functioniert immer noch nicht: wp_set_post_terms ($ postId, “obrazek”, “rodzaj”, false);

und ‘tax_input’ => array (‘rodzaj’ => array (‘obrazek’)) in postArray ()

Solutions Collecting From Web of "wp_insert_post oder wp_set_post_terms speichern keine Taxonomie, aber wp_set_post_terms"

Hast du es versucht:

 wp_set_object_terms( $postId, array( 'obrazek'), 'rodzaj' ); 

wp_set_object_terms und wp_set_post_terms nehmen die gleichen Argumente an. wp_set_post_terms verwendet intern sogar wp_set_object_terms. Der Hauptunterschied besteht darin, dass Sie ein Array in dem verwendeten Array verwendet haben und Sie kein Array in dem Array verwendet haben, das nicht funktioniert hat.

Wenn Ihre Taxonomie hierarchisch ist, benötigt der Parameter tax_input von wp_insert_post ein Array mit IDs und nicht mit Slugs.

 'tax_input' => array( 'name_of_taxonomy' => array(125) // say your term_id is 125 ) 

Danach müssen Sie wahrscheinlich die Termanzahl mit etwas wie diesem aktualisieren:

 add_action('init','reset_terms_counts', 11, 0); function reset_terms_counts(){ $terms_ids = get_terms(array( 'taxonomy' => 'taxonomy_name' ,'fields' => 'ids' ,'hide_empty' => false )); if(is_array($terms_ids)) wp_update_term_count_now($terms_ids, 'taxonomy_name'); } }