Ich benutze wp_insert_post und alle Felder funktionieren, außer tax_input. Stimmt etwas mit meinem Code nicht?
$customtax = array(
'product_link' => $link,
'product_price' => $price,
'product_description' => $desc );
$my_post = array(
'post_title' => $title,
'post_content' => $content,
'post_type' => 'products',
'tax_input' => $customtax
);
Danke im Voraus
Der häufigste Grund ist, dass Sie diesen Code ohne Benutzerkontext (cron usw.) ausführen. In wp_insert_post()
context WP wird geprüft, ob der Benutzer Berechtigungen für eine Taxonomie hat. Kein Benutzer entspricht keiner Berechtigung entspricht keiner Zuweisung von Begriffen.
Die Problemumgehung besteht darin, zuerst einen Beitrag zu erstellen und ihm dann Begriffe zuzuweisen. Wenn Begriffe explizit über eine API-Methode zugewiesen werden (z. B. wp_set_object_terms()
), wird die Berechtigungsprüfung nicht durchgeführt.
Wie Sie im Kommentar gesagt haben, dass das Plugin die Filter ausführt und keinen Hook hat, muss das Plugin ohnehin den Hook wp_insert_post haben. Ansonsten wie fügst du den Beitrag ein? Ich beantworte das so lange, weil ich das gleiche Problem hatte und den einzigen Weg gefunden habe.
$ new_id = wp_insert_post ($ post_arr, true); $ status = wp_set_object_terms ($ new_id, $ term_id, 'location');
hier ist Standort der Begriff Schnecke. Eines Tages wird jemand dies hilfreich bekommen ..
Wenn Sie tax_input zum Einfügen nach dem Einfügen verwenden, achten Sie darauf, die Bezeichnung taxonomy id zu verwenden, da Slugs oder Namen weggeworfen zu werden scheinen
$my_post = array(
'post_title' => $title,
'post_content' => $content,
'post_type' => 'products',
'tax_input' => array('myTax', array(4,458,11478)),
);