J'utilise wp_insert_post et tous les champs fonctionnent sauf tax_input. Y at-il quelque chose qui ne va pas avec mon code?
$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
);
Merci d'avance
La raison la plus courante est que vous exécutez ce code sans contexte utilisateur (cron, etc.). Dans wp_insert_post()
, contexte WP vérifiera si l'utilisateur dispose d'autorisations pour une taxonomie. Aucun utilisateur ne correspond à aucune autorisation ne correspond à aucun terme attribué.
La solution de contournement consiste à créer d'abord la publication, puis à lui attribuer des conditions. Lorsque des termes sont attribués explicitement via une méthode API (telle que wp_set_object_terms()
), la vérification des autorisations n'est pas effectuée.
Comme vous l'avez dit dans un commentaire, le plugin fera les filtres et n'a pas de hook, je pense que le plugin doit avoir le hook wp_insert_post de toute façon. Sinon, comment insérez-vous le post? Je réponds à cette question depuis si longtemps parce que je suis confronté au même problème et trouve le seul moyen.
$ new_id = wp_insert_post ($ post_arr, true); $ status = wp_set_object_terms ($ new_id, $ term_id, 'location');
ici l'emplacement est le terme limace. Un jour, quelqu'un l'aura utile.
Lors de l'utilisation de tax_input pour la post-insertion, assurez-vous d'utiliser le terme tax tax id, car les slugs ou les noms semblent être jetés.
$my_post = array(
'post_title' => $title,
'post_content' => $content,
'post_type' => 'products',
'tax_input' => array('myTax', array(4,458,11478)),
);