Définir un nombre de mots maximum pour le titre d’un article
Vous avez peut-être souhaiter être en mesure de fixer une limite de mots maximum pour les titres de vos articles. Nous allons voir comment faire.
Parfois vous avez besoin de définir un nombre maximum de mots ou de caractères à ne pas dépasser, afin d’avoir des titres d’articles n’ayant pas une longueur démesurée.
Je vais vous donner l’astuce pour être en mesure de définir un nombre maximum de mots ou de caractères sur les titres de l’article.
Le hook publish_post
permet d’agir lors de la publication d’un article et permettre d’insérer votre contrainte de validation.
Définir un maximum de mots
[pastacode lang=”php” message=”” highlight=”” provider=”manual”]
add_action('publish_post', 'gkp_max_word');
function gkp_max_word() {
global $post;
$title = $post->post_title;
if (str_word_count($title) >= 10 )
wp_die( "Le titre de l'article contient trop de mots, vous êtes limité à un maximum de 10 mots" );
}
[/pastacode]
Définir un maximum de caractères
[pastacode lang=”php” message=”” highlight=”” provider=”manual”]
add_action('publish_post', 'gkp_max_char');
function gkp_max_char() {
global $post;
$title = $post->post_title;
if (strlen($title) >= 100 )
wp_die( "Le titre de l'article contient trop de caractères, vous êtes limité à un maximum de 100 caractères" );
}
[/pastacode]
PS : Si vous souhaitez avoir un minimum de mots ou caractères à définir, faites l’opération inverse ;)
5 Commentaires
Il manque un antislash à 5ème ligne de ces scripts.
Merci bien !
C’est le code qui est mal interprété et mal mise en forme. Il y avait bien le / dans le code source, mais il n’était pas prise en compte à l’affichage.
Du coup, j’ai mis des double quote ;)
Cette méthode fonctionne, cependant on est obligé d’utiliser la fonction “reculer d’une page” du navigateur pour revenir à l’article, qui a alors entièrement disparu ! On est bon pour tout réécrire… Une solution à ce (gros) problème ?
Je viens de tester et cela ne fonctionne pas, le hook est fait après que le post soit créé, donc j’ai bien le “die” mais mon article est déjà là, si je retourne dans la liste des articles, il y est. So ?
Je remonte ce post, car j’y ai été confronté.
Et comme Julio Potier, le post a été publié derrière malgré le wp_die.
J’ai donc changé le tout par un autre hook :
Je réupdate le post direct en brouillon. Alors je n’ai pas trouvé d’autres solutions pour l’instant. Je suis preneur si vous avez découvert une alternative pour que le post ne se publie pas.
Merci :)