web-dev-qa-db-fra.com

wp_insert_post ne met pas à jour la taxonomie personnalisée sélectionnée si vous êtes connecté en tant qu'abonné

Voici mon code, cela fonctionne bien Quand j'essaie de poster des données de front end si Connecté en tant qu'administrateur, mais si je me suis connecté en tant que code d'abonné fonctionne bien mais il ne s'agit pas d'insérer le terme de taxonomie que j'ai sélectionné, voici le code. .

  $new_post = array(
    'post_title' => $postTitle,
    'post_content' => $post,
    'post_status' => 'publish',
    'post_date' => date('Y-m-d H:i:s'),
    'post_author' => $user_ID,
    'post_type' => 'publications',
    'tax_input' => array( 'publicationstype'=> $term_id ) 
    //'post_category' => array(6)
);

wp_insert_post($new_post);

ici 'publicationstype' est la taxonomie personnalisée, y a-t-il quelqu'un qui peut m'aider !! merci d'avance

1
Salih K

C'est parce que, dans wp_insert_post, les capacités des utilisateurs actuels sont vérifiées avant d'ajouter les termes:

if ( current_user_can($taxonomy_obj->cap->assign_terms) )
    wp_set_post_terms( $post_ID, $tags, $taxonomy );

pour contourner ce problème, utilisez wp_set_object_terms après wp_insert_post pour ajouter les termes:

$new_post = array(
    'post_title' => $postTitle,
    'post_content' => $post,
    'post_status' => 'publish',
    'post_date' => date('Y-m-d H:i:s'),
    'post_author' => $user_ID,
    'post_type' => 'publications'
);
$new_id = wp_insert_post( $new_post );
wp_set_object_terms( $new_id, $term_id, 'publicationstype' );
2
Milo