Comment définir une limite de caractères sur the_content () et the_excerpt () dans wordpress? Je n'ai trouvé que des solutions pour la limite de mots - je veux pouvoir définir un nombre exact de caractères de sortie.
Vous pouvez utiliser une fonction de rappel du filtre Wordpress. Dans le répertoire de votre thème, créez un fichier appelé functions.php
et ajoutez le texte suivant dans:
<?php
add_filter("the_content", "plugin_myContentFilter");
function plugin_myContentFilter($content)
{
// Take the existing content and return a subset of it
return substr($content, 0, 300);
}
?>
La fonction plugin_myContentFilter()
sera appelée à chaque fois que vous demanderez le contenu d'un article/d'une page via the_content()
- elle vous fournira le contenu en tant qu'entrée et utilisera ce que vous retournez de la fonction pour une sortie ultérieure ou d'autres fonctions de filtrage.
Vous pouvez également faire la même chose pour the_exercpt()
- add_filter()
, puis une fonction à utiliser comme rappel.
Voir la documentation de référence du filtre Wordpress pour plus de détails.
Ou encore plus facilement et sans avoir besoin de créer un filtre: utilisez le mb_strimwidth
de PHP pour tronquer une chaîne à une certaine largeur (longueur). Assurez-vous simplement que vous utilisez l'une des syntaxes get_
. Par exemple, avec le contenu:
<?php $content = get_the_content(); echo mb_strimwidth($content, 0, 400, '...');?>
Ceci coupera la chaîne à 400 caractères et la fermera avec ...
. Ajoutez simplement un lien "lire plus" à la fin en pointant sur le lien permanent avec get_permalink()
.
<a href="<?php the_permalink() ?>">Read more </a>
Bien sûr, vous pouvez également créer le read more
dans la première ligne. Il suffit alors de remplacer '...'
par '<a href="' . get_permalink() . '">[Read more]</a>'
Cela équilibre également les balises HTML afin qu'elles ne soient pas laissées ouvertes et ne brise pas les mots.
add_filter("the_content", "break_text");
function break_text($text){
$length = 500;
if(strlen($text)<$length+10) return $text;//don't cut if too short
$break_pos = strpos($text, ' ', $length);//find next space after desired length
$visible = substr($text, 0, $break_pos);
return balanceTags($visible) . " […]";
}
wp_trim_words
Cette fonction réduit le texte à un certain nombre de mots et renvoie le texte coupé.
echo wp_trim_words( get_the_content(), 40, '...' );
Pour Utiliser les fonctions the_content()
(pour afficher le contenu principal de la page)
$content = get_the_content();
echo substr($content, 0, 100);
Pour Utiliser les fonctions the_excerpt()
(pour afficher le contenu abrégé de la page)
$excerpt= get_the_excerpt();
echo substr($excerpt, 0, 100);
Remplacez <?php the_content();?>
par le code ci-dessous
<?php
$char_limit = 100; //character limit
$content = $post->post_content; //contents saved in a variable
echo substr(strip_tags($content), 0, $char_limit);
?>
juste pour aider, si quelqu'un veut limiter la longueur de publication à home page
.. alors peut utiliser le code ci-dessous pour le faire ..
le code ci-dessous est simplement une modification de @bfred.it
Sir
add_filter("the_content", "break_text");
function limit_text($text){
if(is_front_page())
{
$length = 250;
if(strlen($text)<$length+10) return $text; //don't cut if too short
$break_pos = strpos($text, ' ', $length); //find next space after desired length
$visible = substr($text, 0, $break_pos);
return balanceTags($visible) . "... <a href='".get_permalink()."'>read more</a>";
}else{
return $text;
}
}
<?php
echo apply_filters( 'woocommerce_short_description', substr($post->post_excerpt, 0, 500) )
?>
wp_trim_words()
Cette fonction réduit le texte à un certain nombre de mots et renvoie le texte coupé.
$excerpt = wp_trim_words( get_the_content(), 40, '<a href="'.get_the_permalink().'">More Link</a>');
Récupère une chaîne tronquée avec width en utilisant mb_strimwidth()
fonction php.
$excerpt = mb_strimwidth( strip_tags(get_the_content()), 0, 100, '...' );
Utilisation de la méthode add_filter()
de WordPress sur le filtre the_content
.
add_filter( "the_content", "limit_content_chr" );
function limit_content_chr( $content ){
if ( 'post' == get_post_type() ) {
return mb_strimwidth( strip_tags($content), 0, 100, '...' );
} else {
return $content;
}
}
Utilisation de la fonction php personnalisée pour limiter les caractères du contenu.
function limit_content_chr( $content, $limit=100 ) {
return mb_strimwidth( strip_tags($content), 0, $limit, '...' );
}
// using above function in template tags
echo limit_content_chr( get_the_content(), 50 );