J'ai un petit problème. J'ai une taxonomie personnalisée 'rodzaj' avec la valeur i.ex. Obrazek. J'utilise ce code pour ajouter un post:
$postArray = array(
'post_status' => 'publish',
'post_author'=> get_current_user_id(),
'post_category'=>array($catId),
'post_title' => $_POST['titlePhoto'],
'tax_input' => array( 'rodzaj' => array( 'obrazek') ) ,
);
Ce code ajoute un article mais sans taxonomie. J'ai aussi essayé ceci:
wp_set_object_terms($postId, "obrazek", 'rodzaj', false);
Ça ne marche pas aussi.
Le code de travail est:
wp_set_post_terms( $postId, array( 'obrazek'), 'rodzaj' );
Pourquoi les 2 premières fonctions ne fonctionnent pas?
J'ai fait une erreur au début. C'est un code de travail complet:
$catId = get_cat_ID("Obrazki");
$postArray = array(
'post_status' => 'publish',
'post_author'=> get_current_user_id(),
'post_category'=>array($catId),
'post_title' => $_POST['titlePhoto'],
'tags_input' => explode(',', $_POST['tagsPhoto'])
);
$postId = wp_insert_post($postArray);
if($postId)
{
wp_set_object_terms($postId, "obrazek", 'rodzaj', false);
}
Ne fonctionne toujours pas: wp_set_post_terms ($ postId, "obrazek", 'rodzaj', false);
et 'tax_input' => array ('rodzaj' => array ('obrazek')) dans postArray ()
As-tu essayé:
wp_set_object_terms( $postId, array( 'obrazek'), 'rodzaj' );
wp_set_object_terms
et wp_set_post_terms
prennent les mêmes arguments. wp_set_post_terms
utilise même wp_set_object_terms en interne. La principale différence est que vous avez utilisé un tableau dans celui qui a fonctionné et que vous n'avez pas utilisé un tableau dans celui qui n'a pas fonctionné.
Si votre taxonomie est hiérarchique, le paramètre tax_input de wp_insert_post nécessite un tableau si id, et non slug.
'tax_input' => array(
'name_of_taxonomy' => array(125) // say your term_id is 125
)
Après cela, vous devrez probablement mettre à jour le nombre de termes avec quelque chose comme ceci:
add_action('init','reset_terms_counts', 11, 0);
function reset_terms_counts(){
$terms_ids = get_terms(array(
'taxonomy' => 'taxonomy_name'
,'fields' => 'ids'
,'hide_empty' => false
));
if(is_array($terms_ids)) wp_update_term_count_now($terms_ids, 'taxonomy_name');
}
}