web-dev-qa-db-fra.com

extrait_longueur ne fonctionne pas

J'essaie de construire un thème, je veux contrôler la longueur des extraits de post en faisant quelque chose comme ceci dans functions.php:

function theme_excerpt_length( $length ) {
    return 45;
}
add_filter( 'excerpt_length', 'theme_excerpt_length', 999 );

Mais cela ne semble pas avoir l’effet souhaité de réduire la longueur de l’extrait à 45 mots. Même sans la fonction, certains extraits sont plus longs que les 55 mots par défaut. Quel pourrait être le problème?

1
bodesam

Il existe deux méthodes rapides pour afficher des longueurs d'extraits personnalisés dans votre thème à l'aide de wp_trim_words. N'oubliez pas que si vous utilisez the_excerpt(), la longueur de votre extrait sera toujours au maximum de 55, jamais plus. Si vous utilisez the_content() en revanche, vous pouvez spécifier une longueur d’extrait de plus de 55 mots.

Utilisez ce qui suit pour afficher votre extrait. N'oubliez pas de remplacer get_the_excerpt par get_the_content si vous avez besoin d'un extrait de plus de 55, et remplacez <a href="'. esc_url( get_permalink() ) . '">' . '&nbsp;&hellip;' . __( 'Read more &nbsp;&raquo;', 'pietergoosen' ) . '</a> par tout extrait qui se termine. Ma fin affiche un "lire plus" texte avec le nom de la publication.

function pietergoosen_custom_excerpts($limit) {
    return wp_trim_words(get_the_excerpt(), $limit, '<a href="'. esc_url( get_permalink() ) . '">' . '&nbsp;&hellip;' . __( 'Read more &nbsp;&raquo;', 'pietergoosen' ) . '</a>');
}

Maintenant, utilisez simplement echo pietergoosen_custom_excerpts($limit); n'importe où dans vos modèles où vous devez afficher des extraits. Remplacez simplement $limit par le nombre de mots, par exemple echo pietergoosen_custom_excerpts(45); pour afficher 45 mots.

EDIT

Jetez un coup d'œil à ma réponse sur un extrait personnalisé également

3
Pieter Goosen

C’est la fonction que j’utilise pour contrôler la longueur des extraits et du contenu, en particulier dans les cas où l’utilisateur final ne se souviendra probablement pas d’ajouter la balise <!--more-->, mais que la conception du thème nécessite.

function excerpt($limit) {
    $excerpt = explode(' ', get_the_excerpt(), $limit);
    if (count($excerpt)>=$limit) {
        array_pop($excerpt);
        $excerpt = implode(" ",$excerpt).'...';
      } else {
        $excerpt = implode(" ",$excerpt);
      } 
    $excerpt = preg_replace('`\[[^\]]*\]`','',$excerpt);
    return $excerpt;
    }

À partir de là, vous pouvez modifier le code de votre extrait dans vos fichiers de modèle à partir de: <?php the_excerpt();?>

...à:

<?php echo excerpt(25);?>

où 25 est le nombre de caractères que vous voulez afficher. Lorsque je conçois des thèmes, j’ai tendance à utiliser des caractères plutôt que des mots, car l’espacement est un peu plus cohérent.

2
Oturia