Comment attribuer automatiquement des balises et des catégories aux soumissions d'articles ?

Souhaitez-vous attribuer automatiquement des étiquettes et des catégories aux articles soumis ? Avec le module complémentaire Post Submissions, vous pouvez permettre à vos visiteurs de choisir les catégories pour chaque article soumis. Mais que se passerait-il si vous vouliez assigner ces catégories et même ajouter des balises à ces messages depuis le formulaire au moment où il est soumis ? En utilisant PHP, vous pouvez facilement assigner une catégorie ou une balise à ces messages lorsqu'ils sont soumis.

Création du formulaire

Tout d'abord, vous devez créer un formulaire de soumission d'article. Si vous avez besoin d'aide, consultez cette documentation.

Lorsque vous créez votre formulaire, n'oubliez pas de supprimer le champ Categories qui est automatiquement ajouté par défaut lorsque vous choisissez de créer le modèle de formulaire Blog Post Submission. Comme nous allons les définir manuellement à l'aide d'extraits de PHP, nous ne voulons pas donner cette option à notre formulaire.

supprimer le menu déroulant Catégories du modèle de formulaire Soumission d'un message

Attribution automatique des étiquettes et des catégories

Pour attribuer automatiquement des étiquettes et des catégories aux messages soumis, nous devons ajouter un extrait à notre site.

Si vous avez besoin d'aide pour ajouter des snippets à votre site, veuillez consulter ce tutoriel.

/**
 * Assign tags and categories to post submissions
 *
 * @link https://wpforms.com/developers/how-to-automatically-assign-tags-and-categories-to-post-submissions/
 */

function wpf_dev_post_submissions_process( $post_id, $fields, $form_data ) {
      
	// If form ID is 649, run code below
        if ( 649 !== absint( $form_data[ 'id' ] ) ) {
            return;
        }
	
	// Craft Category ID is 22 - assign the ID 22 as the category 
	wp_set_object_terms( $post_id, 22, 'category', true );
	
	// Set tag on post to crafts
	wp_set_object_terms( $post_id, 'crafts', 'post_tag' );

    }

add_action( 'wpforms_post_submissions_process', 'wpf_dev_post_submissions_process', 10, 3 );

Pour trouver le numéro d'identification de votre catégorie, veuillez consulter cet article de nos amis de WPBeginner.

Puisque nous savons que ce formulaire ne recueillera que des soumissions concernant l'artisanat, nous ciblons l'identifiant du formulaire avec 649. Ensuite, nous attribuerons l'identifiant de catégorie 22, car il s'agit du numéro d'identification de notre catégorie Artisanat, et nous ajouterons également la balise Artisanat à l'article.

Si vous avez besoin d'aide pour trouver le numéro d'identification de votre formulaire, veuillez consulter ce tutoriel.

Ce snippet attribue désormais des étiquettes et des catégories aux articles soumis.

Vous souhaitez ajouter l'URL de l'article dans le message de confirmation lorsque le formulaire est soumis ? Consultez notre tutoriel sur Comment inclure l'URL de l'article soumis dans le message de confirmation.

Référence Action

wpforms_post_submissions_process

FAQ

Q : Comment supprimer la catégorie "Non attribué" ?

R : Si vous souhaitez supprimer automatiquement la catégorie que WordPress attribue automatiquement à tous les nouveaux articles, vous pouvez utiliser ce snippet.

L'ID de la catégorie non attribuée est généralement 1, mais vous devez quand même le confirmer en trouvant le numéro d'ID de la catégorie de la même manière que dans les étapes précédentes.


/**
 * Assign tags and categories to post submissions
 *
 * @link https://wpforms.com/developers/how-to-automatically-assign-tags-and-categories-to-post-submissions/
 */
 
function wpf_dev_post_submissions_process( $post_id, $fields, $form_data ) {
       
    // If form ID is 649, run code below
        if ( 649 !== absint( $form_data[ 'id' ] ) ) {
            return;
        }
     
    // Craft Category ID is 22 - assign the ID 22 as the category 
    wp_set_object_terms( $post_id, 22, 'category', true );
	
	// Remove the Unassigned category name from all new posts
	wp_remove_object_terms( $post_id, 1, 'category', true );
     
    // Set tag on post to crafts
    wp_set_object_terms( $post_id, 'crafts', 'post_tag' );
 
    }
 
add_action( 'wpforms_post_submissions_process', 'wpf_dev_post_submissions_process', 10, 3 );