web-dev-qa-db-fra.com

Comment créer un lien "Read the Suite"?

Je travaille sur un site Web qui utilise une page d'accueil statique. Il montre également le billet de blog le plus récent. Ceci a été réalisé en créant une page et en utilisant un modèle de page personnalisé.

Parfois, la publication du blog est trop longue, je souhaite donc utiliser the_excerpt pour le raccourcir automatiquement sans qu'il soit nécessaire d'ajouter une balise supplémentaire.

Jusqu'ici tout va bien. Mais the_excerpt ne crée pas réellement de lien "en savoir plus". C'est un problème assez commun, alors j'ai ajouté:

<?php
function new_excerpt_more($more) {
    global $post;
    return '... <a href="'. get_permalink($post->ID) . '">continue reading</a>.';
}
add_filter('excerpt_more', 'new_excerpt_more');
?>

dans mon fichier functions.php.

J'ai effectivement utilisé ce code sans problème sur un autre site, mais pour une raison quelconque, cela ne fonctionne pas dans ce cas. Ma conjecture initiale était que c'était parce qu'il était appelé sur une page statique.

Le site Web est http://stuandjessproductions.com . Le thème est central par QODE et j'utilise un thème enfant personnalisé.

EDIT

Ajout de code à partir de la page de modèle, selon la demande. Ce n'est pas la page entière, mais plutôt le bit pertinent pour le post de nouvelles:

<?php $query = "showposts=1&orderby='date'"; query_posts($query);?>
<?php if(have_posts()) : while ( have_posts() ) : the_post(); ?>
    <a href="<?php the_permalink();?>"><?php the_post_thumbnail('home'); ?></a>
    <div class="overlay">Latest News</div>
    <h4><a href="<?php the_permalink();?>"><?php the_title(); ?></a></h4>
    <?php the_excerpt(); ?>
<?php endwhile; ?>
<?php endif; ?>
5
convoke

lorsque vous remplissez la zone Extrait de tout texte sur la page de modification, la fonction the_excerpt() n'ajoute pas de en savoir plus ou ... à la fin de la description courte. En savoir plus n'est inclus que si Extrait est vide, et ce n'est pas un bug, c'est une fonctionnalité.

Maintenant, la solution consiste à éviter que le filtre excerpt_more renvoie plus d'informations, et utilisez le hook the_excerpt. Mais excerpt_more doit être mis à vide pour être sûr que la double lecture n’est pas affichée. Alors, le code dont vous avez besoin -

function new_excerpt_more($more) {
    return '';
}
add_filter('excerpt_more', 'new_excerpt_more', 21 );

function the_excerpt_more_link( $excerpt ){
    $post = get_post();
    $excerpt .= '... <a href="'. get_permalink($post->ID) . '">continue reading</a>.';
    return $excerpt;
}
add_filter( 'the_excerpt', 'the_excerpt_more_link', 21 );

Le code ci-dessus pourrait aller à votre fichier themes functions.php.

9
Shazzad