Benutzerdefinierte Taxonomiebegriffe können nicht über benutzerdefiniertes Formular festgelegt werden

Frage

Ich erstelle mein erstes Plugin und in diesem können Benutzer (unter anderem) einen neuen Post über ein benutzerdefiniertes Formular aus dem WordPress-Backend erstellen. Dieser Beitrag verwendet benutzerdefinierten Posttyp und benutzerdefinierte Taxonomie. Das Formular erstellt einen neuen Post, es kann jedoch keine benutzerdefinierte Taxonomie festlegen.

Post regelmäßig zu erstellen (nicht über mein benutzerdefiniertes Formular) funktioniert gut dh. erlaubt mir, benutzerdefinierte Taxomony hinzufügen.

Benutzerdefinierte Post-Typ und benutzerdefinierte Taxonomien werden vom Buch registriert, Begriffe sind bereits in db eingefügt.

* Taxonomie ist keine Variable für Debugging-Zwecke

add_action('plugins_loaded', 'newpost'); function newpost() { if (isset($_POST['new_post']) == '1') { $post_title = $_POST['posttitle']; $post_content = $_POST['postcontent']; $new_post = array( 'ID' => '', 'post_author' => 1, 'post_type' => 'cars', 'post_content' => $post_content, 'post_title' => $post_title, 'comment_status' => 'closed', 'ping_status' => 'closed', 'post_status' => 'publish', 'tax_input' => array('cars' => array('bmw', 'audi')) ); $post_id = wp_insert_post($new_post); } } 

Ich habe sogar versucht, ‘tax_input’ zu entfernen und wp_set_post_terms und wp_set_object_terms zu verwenden, aber die Ergebnisse waren gleich. Zwei Tage bin ich dabei fest, also würde jede Hilfe sehr geschätzt werden …

Lösung

Die Lösung bestand darin, plugins_loaded in init mit niedriger Priorität zu ändern.

  add_action( 'init', 'newpost', 200 ); 

Das Problem war, dass die Benutzerrechte beim Brennen des Plugins noch nicht festgelegt wurden.

Solutions Collecting From Web of "Benutzerdefinierte Taxonomiebegriffe können nicht über benutzerdefiniertes Formular festgelegt werden"

Hast du wp_set_object_terms? … die nach Ihrem Aufruf an wp_insert_post platziert werden wp_insert_post da die Post-ID benötigt wird, um die richtigen Begriffe anzuhängen, und die richtige Taxonomie mit dem richtigen Beitrag.

 //add_action('plugins_loaded', 'newpost'); # will not work, user not authenticated add_action('init', 'newpost'); // will work, user authenticated function newpost() { if (isset($_POST['new_post']) == '1') { $post_title = $_POST['posttitle']; $post_content = $_POST['postcontent']; $taxonomy = 'cars'; //change accordingly... $terms = $_POST['tax_terms']; //change accordingly... $new_post = array( 'ID' => '', 'post_author' => 1, 'post_type' => 'cars', 'post_content' => $post_content, 'post_title' => $post_title, 'comment_status' => 'closed', 'ping_status' => 'closed', 'post_status' => 'publish', ); $post_id = wp_insert_post($new_post); //$terms can be an array of term IDs/slugs //$taxonomy is your taxonomy name, eg cars wp_set_object_terms( $post_id, $terms, $taxonomy ); } }