Je suis ce tutoriel - " Affichez vos messages populaires dans WordPress sans plugin " et souhaitez limiter le nombre maximal de caractères dans le titre qui sont affichés. Aussi, pourquoi la vignette est-elle parfois plus petite que le nombre que je définis dans le php?
ajoutez d'abord cette fonction à votre fichier functions.php
function max_title_length($title){
$max = 20;
return substr( $title, 0, $max ). " …";
}
puis avant la boucle du code que vous avez lié, ajoutez cette ligne à la fonction ci-dessus:
add_filter( 'the_title', 'max_title_length');
et après la boucle, supprimez ce filtre:
remove_filter( 'the_title', 'max_title_length');
et remplacez simplement $max = 20;
par ce que vous voulez.
Vous pouvez utiliser ce bit pour limiter le nombre de caractères affichés et ajouter un ellipse.
Dans cet exemple particulier, je l'ai configuré pour truniquer à 38 caractères et n'afficher les Ellipsis que si le titre était truniqué. Et quelle que soit la longueur, affichez le titre complet sur la page single_post.
<?php
//assign the title to a variable
$the_title = esc_attr ( the_title_attribute ( 'echo=0' ) );
//specify our desired max character count
$max_length = 38;
//strlen gets the length of the string
$title_length = strlen ( $the_title );
// check if the length of the string is greater than our assigned max length
if ( $title_length > $max_length ) {
// if it is display a substring of the title from the
// first character to the 38th character and append ...
$title_excerpt = substr ( $the_title, 0, $max_length ) . '...';
} else {
// otherwise just return the_title()
$title_excerpt = $the_title;
} ?>
<h1 class="entry-title">
<?php if ( is_single () ) { // If article page
the_title ();
} else { // If homepage
?>
<a href="<?php the_permalink (); ?>" title="<?php echo esc_attr ( the_title_attribute ( 'echo=0' ) ); ?>" rel="bookmark"><?php echo $title_excerpt; ?></a>
<?php } ?>
</h1>
J'ai amélioré la réponse @Bainternet pour afficher uniquement ...
lorsque le titre est plus long que $max
:
function max_title_length( $title ) {
$max = 30;
if( strlen( $title ) > $max ) {
return substr( $title, 0, $max ). " …";
} else {
return $title;
}
}
Ensuite, vous pouvez accrocher comme ceci:
add_filter( 'the_title', 'max_title_length');