j'ai le code qui peut ajouter un message dans un type de message personnalisé, mais l'ajout de la catégorie ne fonctionne pas.
$args = array(
'post_title' => $title ,
'post_status' => 'publish',
'post_type' => 'mypost'
);
$post_id = wp_insert_post($args);
$category_ids = array(38,39);
wp_set_post_categories( $post_id, $category_ids, 'category');
Vous devez enregistrer le type de publication personnalisé avec la prise en charge de la taxonomie category
:
add_action('init', 'cyb_register_post_type');
function cyb_register_post_type() {
$args = array(
// All the other args
'taxonomies' => array( 'category' ),
);
register_post_type( 'my_post_type', $args );
}
Vous pouvez ensuite définir les relations entre le type de publication personnalisé et la taxonomie categoy
comme vous le faisiez, mais vous devez corriger le code.
À partir de ceci:
wp_set_post_categories( $post_id, $category_ids, 'category');
Pour cela (les catégories précédentes sont supprimées et remplacées par les nouvelles catégories):
wp_set_post_categories( $post_id, $category_ids );
// The above line is equivalent to
// wp_set_post_categories( $post_id, $category_ids, false );
// or
// wp_set_post_terms( $post_id, $category_ids, 'category', false );
Ou à (les catégories précédentes ne sont pas supprimées, de nouvelles catégories sont ajoutées):
wp_set_post_categories( $post_id, $category_ids, true );
Vous pouvez également enregistrer une taxonomie personnalisée et l'utiliser pour votre type d'article personnalisé:
add_action('init', 'cyb_register_post_type_and_taxonomy');
function cyb_register_post_type_and_taxonomy() {
$post_type_args = array(
// All the other args
'taxonomies' => array( 'my_custom_taxonomy' ),
);
register_post_type( 'my_post_type', $post_type_args );
$taxonomy_args = array(
// Arguments for the custom taxonomy
// See https://developer.wordpress.org/reference/functions/register_taxonomy/
);
register_taxonomy( 'my_custom_taxonomy', 'my_post_type', $args );
}
Et utilisez ensuite wp_set_post_terms()
, pas wp_set_post_categories()
:
wp_set_post_terms( $post_id, $category_ids, 'my_custom_taxonomy');
Comme vous le faites pour le type de publication personnalisé, vous devez utiliser la taxonomie. Je vais vous suggérer d'utiliser <?php wp_set_post_terms( $post_id, $terms, $taxonomy, $append ) ?>
. s'il vous plaît se référer ce lien pour l'utilisation détaillée de la fonction.