Définir la longueur d’un article avec la fonction the_content

Les deux codes ci-dessous vont nous permettre de limiter la longueur d’un article tout en conservant sa mise en page italique, gras, lien … Taille des images et les shortcodes.


Pour cela nous allons réinterpréter la fonction the_content juste en modifiant le nom de la fonction, ça va permettre d’agir juste sur cette fonction ce qui n’affectera pas vos pages et articles.


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

function the_content_custom( $more_link_text = null, $strip_teaser = false) {
	$content = get_the_content( $more_link_text, $strip_teaser );

	/**
	 * Filter the post content.
	 *
	 * @since 0.71
	 *
	 * @param string $content Content of the current post.
	 */
	$content = apply_filters( 'the_content_custom', $content );
	$content = str_replace( ']]>', ']]>', $content );
	echo $content;
}

Ouvrer votre page index.php ou page template puis remplacé the_content par the_content_custom.


Ensuite on va ajouter le code suivant toujours le fichier function.php, il va permettre de personnalisé la longueur du texte sans couper un mot et un lien lire la suite…

add_filter("the_content_custom", "new_content");
function new_content($text){
	
    $length = 1600; // ici on ajuste la longueur en nombre de caractère.
    if(strlen($text)<$length+10) return $text;// ici on ne coupe pas les mots en-dessous de 10 caractères.

    $new_content_pos = strpos($text, ' ', $length);//ici on recherche un espace pour couper le texte.
    $visible = substr($text, 0, $new_content_pos);
    return balanceTags($visible) . ' ... <a href="' . get_permalink() . '">[Lire la suite]</a>';
}