web-dev-qa-db-fra.com

Impossible d'insérer un terme de taxonomie à l'aide de wp_insert_post ()

J'ai un type de message personnalisé appelé eyeglasses et une taxonomie personnalisée appelée models. J'ai également créé deux termes de taxonomie appelés M156 et M120. Maintenant, j'essaye de télécharger deux articles pour test via wp_insert_post.

Ceci ajoute le $title au post_title de eyeglasses mais n'additionne ni ne met à jour le terme de l'article.

function we_load_posts($title, $term)
{
    wp_insert_post(array(
        "post_type" => "eyeglasses",
        "post_title" => $title,
        "tax_input" => array(
                             "models" => array($term)
                           ),
        "post_status" => "publish"
    ));
}
we_load_posts("Montana", "M156");
we_load_posts("Havana", "M120");

pouvez-vous s'il vous plaît laissez-moi savoir ce que je manque ou ce que je fais mal ici?

3
Behseini

Peu de points me viennent à l’esprit:

  1. Il y a une faute de frappe dans "post_type" => "'eyeglasses" (citation simple supplémentaire). Ce devrait être: "post_type" => "eyeglasses".

  2. Essayez de mettre le $term au lieu de array( $term ):

    "tax_input" => array(
        "models" => $term
    )
    
  3. Aussi, est-ce models ou model? par exemple.

    "tax_input" => array(
        "model" => $term
    )
    
  4. tax_input requiert la capacité assign_terms. Donc, si l'utilisateur avec lequel vous exécutez ce CODE n'a pas cette capacité, cela ne fonctionnera pas.

    Dans ce cas, la bonne façon est:

    $post_id = wp_insert_post(array(
        "post_type" => "eyeglasses",
        "post_title" => $title,
        "post_status" => "publish"
    ));
    
    wp_set_object_terms( $post_id, $term, 'model' );
    
4
Nazaria