Limiter le nombre de caractère dans le titre d’un l’article

Cette fonction va vous permettre de limité le nombre de caractère dans les titres de vos articles, par exemple : pour mieux présenter une page d’accueil qui contient plusieurs blocs d’articles différent.

Ajouter le code ci-dessous dans votre fichier function.php de votre thème :


 

<?php// Limiter le nombre de caractère dans le titre d'un l'article

function shortened_title() {

$original_title = get_the_title();

$title = html_entity_decode($original_title, ENT_QUOTES, "UTF-8");

// indiquer le nombre de caratère

$limit = "55";

// fin du titre couper

$ending="...";

if(strlen($title) >= ($limit+3)) {

$title = substr($title, 0, $limit) . $ending; }

echo $title;

}

?>

Puis remplacer the_title(); par :

<?php shortened_title(); ?>

Deuxième méthode : limité le nombre de mots dans le titre

Dans cette deuxième méthode  je vais me servir de la fonction get_the_title de WordPress et de la fonction count en  php pour comptabiliser le nombre de mots.

Ajouter le code suivant dans le fichier function.php de votre thème WordPress :

function new_title($after = '', $length) {

   $shtitle = explode(' ', get_the_title(), $length);

   if (count($shtitle)>=$length) {

       array_pop($shtitle);

       $shtitle = implode(" ",$shtitle). $after;

   } else {

       $shtitle = implode(" ",$shtitle);

   }

       return $shtitle;

}

Puis remplacer the_title par cette ligne ci-dessous en indiquant le nombre de mots que vous voulez dans les titres de vos articles les (…) compte pour 1 mot.

<?php echo new_title('...', 5); ?>

8 Limiter le nombre de caractère dans le titre d’un l’article

  1. Merci pour ce tuto!
    Je me demandais juste comment limiter le nombre de caractère dans le titre d’un l’article sans couper les mots?
    Si quelqu’un a une idée ….
    Cela me dépannerais bien 😉

    j’avais penser à utiliser quelque chose avec cette fonction :


    if (str_word_count($title) &gt;= 10 )

    Mais comment l’utilisé?

    1. Bonjour Nico,
      Pour répondre a votre question j’ai mis à jour l’article et j’ai utiliser la fonction count et get_the_title , j’espère avoir pu vous dépanné la dessus ;).

    1. Bonsoir Bruno,
      J’ai revérifié le code fonctionne bien le problème peu venir de l’encodage du fichier php. Par exemple l’affichage d’UTF8 en iso-8859-1 donnera des é à la place des é. Inversement afficher un document iso-8859-1 en UTF8 affichera des ? à la place des accents. Editer votre fichier php (avec notepad par exemple) ou vous affichez le titre et changé le format de l’encodage a l’enregistrement. Ou utilisez un fichier php d’un thème par défaut de wordpress.

  2. Bonjour à tous,

    Cela vous parait surement évident, mais une fois le code copié dans le fichier “fonctions.php”, il faut remplacer la variable the_title() par la ligne donnée.

    J’ai trouvé la variable the_title()dans mon fichier de thème 2columnssidebar.php, mais ça n’a aucun effet.

    Après j’utilise une fonction de mon thème disposant deux articles par ligne, c’est pour cela que mes titres sont coupés et j’aurais souhaité avoir la main sur leur longueur.

    Bref si vous pouvez m’aider c’est magnifique !

    1. Bonjour Adrien,
      Déjà avez-vous bien remplacé the_title par shortened_title(); pour la première fonction, si c’est le cas vous pouvez modifier la longueur du titre à la ligne 11

      $limit=&quot;55&quot;;

      55 est le nombre de caractères dans le titre en plus des …

      Si vous utilisez la deuxième fonction avec echo new_title(‘…’, 5); en remplacement de the_title, 5 est le nombre de caractère dans le titre que vous pouvez changer et personnalisé pour chaque boucle, si vous utilisez plusieurs colonnes je vous le conseil.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *