Tout savoir sur WordPress
Tutoriel WordPress

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

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" );
}

Définir un maximum de caractères

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" );
}

PS : Si vous souhaitez avoir un minimum de mots ou caractères à définir, faites l’opération inverse ;)

Cet article a été mis à jour il y a 2490 jours - Il n'est peut être plus à jour !

Article écrit par Jonathan B.

Jonathan est le co-fondateur de WP Media, startup connue pour être l’auteur de WP Rocket et Imagify. Il est aussi co-organisateur du WordCamp Lyon et Paris.

5 Commentaires

    • 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 ;)

  1. 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 ?

  2. 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 ?

  3. 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 :

    function jl_post_unpublished( $new_status, $old_status, $post ) 
    {
        if ( $new_status == 'publish' ) 
        {
            $title = $post->post_title;
            
            if ( strlen($title) >= 38 )
            {
                $my_post = array(
                    'ID'           => $post->ID,
                    'post_status' => 'draft'
                );
                wp_update_post( $my_post );
                
                wp_die( 'Le titre de l'article contient trop de caractères, vous êtes limité à  un maximum de 38 caractèresID .'&action=edit">Retour sur l'article' );
            }
        }
    }
    add_action( 'transition_post_status', 'jl_post_unpublished', 10,3 );
    

    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 :)

5717c874eee125df7245880a38b41eac22222222222