it-swarm.com.de

tax_input funktioniert nicht wp_insert_post

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

4
Shawn James

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.

14
Rarst

Es stellt sich heraus, dass tax_input nicht funktioniert, wenn ein Benutzer nicht über die Funktionen verfügt, um mit einer benutzerdefinierten Taxonomie zu arbeiten:

wp-includes/post.php (wp_insert_post):  enter image description here 

Fügen Sie also entweder die richtigen Kappen hinzu oder verwenden Sie wp_set_object_terms()

3

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 ..

0
Tuhin Ahmed

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)),
);
0
user1180105