Comment limiter à une seule catégorie un article de blog wordpress ?
Suite à une demande sur un groupe d’entraide WordPress, un utilisateur avait besoin de limiter à une seule catégorie ses articles de blog. Je vous propose aujourd’hui une solution simple à implémenter en quelques lignes de code.
Tout d’abord, côté client (dans le navigateur web), nous informons l’utilisateur que s’il tente de publier un article avec plus d’une catégorie cochée, l’article ne peut pas être publié. Nous l’invitons à sélectionner uniquement une seule catégorie.
En parallèle, côté serveur, nous indiquons également que l’article ne doit pas être publié si plus d’une catégorie est sélectionnée. Si tel est le cas, nous empêchons le serveur de sauvegarder et de publier l’article.
Les codes
A l’aide d’un plugin pour gérer des snippets tel que Code Snippets (gratuit) ou WPCodeBox (payant) vous allez devoir intégrer ces deux codes :
Code Javascript :
jQuery(document).ready(function($) {
$('#post').submit(function() {
var selectedCategories = $('input[name="post_category[]"]:checked').length;
if(selectedCategories !== 1) {
alert('Veuillez choisir une seule catégorie maximum par post.');
return false; // empeche de publier l'article si plus d'une catégorie est cochée
}
});
});
Code PHP :
add_action('save_post', 'validate_post_categories');
function validate_post_categories($post_id) {
$post_categories = wp_get_post_categories($post_id);
if(count($post_categories) > 1) {
// Plus d'une catégorie est sélectionnée alors affiche ce texte (c'est côté serveur mais on garde le même message que la partie cote client)
wp_die('Veuillez choisir une seule catégorie maximum par post.');
}
}
Et voilà, lorsque vous allez vouloir publier un article avec plus de deux catégories, vous aurez ce message vous empêchant de publier l’article :