Les fonctions de raccourcissement de titre ou de texte

Ici on va lister quelques fonctions utiles pour raccourcir ses titres ou le contenu des extraits.Cela peut etre utile pour afficher différentes longueurs en fonction de la taille d’écran par exemple

Remplacer le lien « read more »

Première fonction, remplacer le lien « read more » par défaut, et le remplacer par trois petits points


function site_excerpt_more($more) {
global $post;
return '...';
}
add_filter('excerpt_more', 'site_excerpt_more');

Cela va automatiquement placer les trois petits points à la fin de chaque extrait, sur une page d’archive, la ou sera placé le code the_excerpt().

Une alternative :

function new_excerpt_more($more) {
global $post;
return '<a class="moretag" href="'. get_permalink($post->ID) . '">...<em>En savoir plus...</em></a>';
}
add_filter('excerpt_more', 'new_excerpt_more');

Raccourcir l’extrait

On peut à la suite rajouter une deuxième fonction pour raccourcir ce même extrait à 20 mots par exemple:

function site_excerpt_length($length) {

return 20;

}
add_filter('excerpt_length', 'site_excerpt_length');

 

Raccourcir les titres

Voici une fonction bien utile pour raccourcir ses titres

function ShortenText($text) { // Function name ShortenText
$chars_limit = 55; // Character length
$chars_text = strlen($text);
$text = $text." ";
$text = substr($text,0,$chars_limit);
$text = substr($text,0,strrpos($text,' '));

if ($chars_text > $chars_limit)
{ $text = $text."..."; } // Ellipsis
return $text;
}

On l’utilise ensuite dans les pages, à la place du « the_title() »  en appelant la fonction sur la fonction « get_the_title() »

<?php echo ShortenText(get_the_title());?>

Une autre solution que l’on retrouve souvent sur les tutos :

function short_title($after = '', $length) {
$mytitle = explode(' ', get_the_title(), $length);
if (count($mytitle)>=$length) {
array_pop($mytitle);
$mytitle = implode(" ",$mytitle). $after;
} else {
$mytitle = implode(" ",$mytitle);
}
return $mytitle;
}

Ensuite dans le site, on pourra afficher le titre de la manière suivante :

echo short_title('...', 10); ?>

Au delà de 10 caractères, on place les trois petits points.. On peut mettre ce qu’on veut à la place (un lien « lire plus » par exemple)

Raccourcir un texte extrait d’un custom field d’ACF

Dans le cas de l’utilisation d’un custom field avec ACF, voici une fonction permettant de raccourcir le texte. Ici par exemple, on définit le nombre de mots (40 ) pour le custom field « description ».

function custom_field_excerpt() {
global $post;
$text = get_field('description');
if ( '' != $text ) {
$text = strip_shortcodes( $text );
$text = apply_filters('the_content', $text);
$text = str_replace(']]>', ']]>', $text);
$regex = '#(<h([1-6])[^>]*>)\s?(.*)?\s?(<\/h\2>)#';
$text = preg_replace($regex,'', $text);
$excerpt_length = 40;
$permalink = get_permalink($post->ID);
$excerpt_more = apply_filters('excerpt_more', ' ' . '<a href="'.$permalink.'" rel="nofollow">[...]</a>');
$text = wp_trim_words( $text, $excerpt_length, $excerpt_more );
}
return apply_filters('the_excerpt', $text);
}

Ensuite, dans son fichier php, on appelle la fonction de la manière suivante :

echo custom_field_excerpt();