web-dev-qa-db-fra.com

Comment définir la limite de caractères sur the_content () et the_excerpt () dans wordpress

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.

16
Thomas

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.

27
richsage

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>'

25
Rvervuurt

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) . " […]";
} 
15
bfred.it

wp_trim_words Cette fonction réduit le texte à un certain nombre de mots et renvoie le texte coupé.

Exemple:-

echo wp_trim_words( get_the_content(), 40, '...' );
8
Purvik Dhorajiya

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);
3
Bhavin Suvaliya

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);
?>

Fonction réfrence php substr ()

Fonction PHP strip_tags () reference

1
waLL e

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;
  }

}
0
Mohammed Sufian
<?php 
echo apply_filters( 'woocommerce_short_description', substr($post->post_excerpt, 0, 500) ) 
?>
0
Ali Tariq

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 );
0
Aamer Shahzad