web-dev-qa-db-fra.com

Wordpress tax_input uniquement si vous êtes connecté

Je travaille sur un plugin WordPress où une sauvegarde des données de plomb par des formes dans mon site Web. Lorsqu'un utilisateur soumet le formulaire, le code suivant est exécuté de sorte qu'un message dans le type de message "lead" soit ajouté.

Presque tout fonctionne bien sauf le tax_input. Lorsque je suis connecté à Wordpress et que je soumets le formulaire sur mon site Web, le statut de prospect "ouvert" est défini.

Mais lorsque je ne suis pas connecté à Wordpress admin et que je soumets le formulaire (un visiteur du site Web n'est jamais connecté hors du parcours), il n'y a pas de statut "ouvert" défini.

Est-ce que quelqu'un sait ce que je fais mal?

    // Get the id of taxonomy "lead-status" by slug
    $term = get_term_by('slug', 'open', 'lead-status' );
    $term_id = $term->term_id;  

    $new_lead = array(
        'post_title' => $lead_name,
        'post_content' => $lead_message,
        'post_type' => 'leads',
        'post_status' => 'publish',
        'tax_input' => array('lead-status' => $term_id)
    );

    $lid = wp_insert_post($new_lead);
2
Robbert

Vous pouvez utiliser wp_set_object_terms après la publication de l'article et en cas d'échec, vous obtiendrez la raison de cet article, par exemple:

$new_lead = array(
    'post_title' => $lead_name,
    'post_content' => $lead_message,
    'post_type' => 'leads',
    'post_status' => 'publish',
);

$lid = wp_insert_post($new_lead);
$status = wp_set_object_terms($lid,$term_id,'lead-status');

Maintenant, ceci effectue la sauvegarde, mais $ status conservera la raison de l'échec en cas d'échec.

1
Bainternet