web-dev-qa-db-fra.com

Lire plus n'apparaît pas lorsque j'écris mon propre extrait

Sur mon blog, dans toutes mes boucles principales, je l’ai paramétré pour afficher excerpt au lieu de content

Si je fais un post plus long et que je laisse la zone de texte excerpt vide, alors wordpress en fera son propre extrait et affichera le [...] ou un lien personnalisé à la fin. C’est génial, mais si je saisis mon propre extrait dans la zone de texte de l’extrait, le texte affiché apparaîtra, mais la partie supplémentaire ne sera pas ajoutée.

Est-ce que quelqu'un sait comment je peux le faire montrer toujours une lecture plus?

2
JasonDavis

Peut-être qu'une déclaration conditionnelle comme celle-ci fonctionnera. La logique est la suivante: "Si l'article contient un extrait explicite, ajoutez un lien" En savoir plus ". Sinon, utilisez le comportement d'extrait par défaut."

if($post->post_excerpt) {
    the_excerpt();
    echo '<a href="'.get_permalink().'">Read More</a>';
} else {
    the_excerpt();
}

Vous pouvez l'utiliser en combinaison avec la suggestion de Gavin d'unifier l'apparence du lien "Lire la suite".

4
5t3ph

Je sais que cette question remonte à plus de deux ans, mais je pense que la réponse est plus correcte.

function new_excerpt_more($more) {
    global $post;
    return $more . '<a href="'. get_permalink( $post->ID ). '" class="readmore">more &raquo;</a>';
}
add_filter('the_excerpt', 'new_excerpt_more');

Même si votre extrait est rempli, le lien "readmore" sera imprimé après le paragraphe de l'extrait.

3
Kamil

Je sais qu'il a trois ans de retard, mais j'ai trouvé une meilleure solution qui pourrait même m'aider à l'avenir:

Commencez par nettoyer l'extrait par défaut more pour supprimer les ellipses par défaut [...]:

function clean_excerpt_more() {
    return '';
}

add_filter( 'excerpt_more', 'clean_excerpt_more' );

Ensuite, nous obtenons l'extrait et ajoutons le lien inline , dans le même paragraphe d'extrait! (La plupart des solutions ci-dessus montrent le lien hors du paragraphe, dans une nouvelle ligne).

function custom_the_excerpt( $excerpt ) {
    global $post;

    if( $post->post_excerpt ) {
        // If the post has manual excerpt,
        // it already has a point to end
        // the paragraph, so we don't want
        // the point + the Ellipsis: ....
        // Clean it!
        $Ellipsis = '';
    } else {
        $Ellipsis = '...';
    }

    // Save the link in a variable
    $link = $Ellipsis . ' <a class="moretag" href="' . get_permalink( get_the_ID() ) . '">' . __( 'Read more &raquo;', 'starion' ) . '</a>';

    // Concatenate the link to the excerpt
    return $excerpt . $link;

    }

add_filter( 'get_the_excerpt', 'custom_the_excerpt' );

Edit: Une note finale. Vous n'avez pas besoin de modifier rien d'autre. Utilisez the_excerpt(); normalement pour afficher l'extrait avec le lien.

J'espère que ça aide à quelqu'un :)

1
Gerard

Ajoutez ceci dans le functions.php de votre thème:

function new_excerpt_more($more) {
       global $post;
    return '<a href="'. get_permalink($post->ID) . '">Read the Rest...</a>';
}
add_filter('excerpt_more', 'new_excerpt_more');

Plus d'infos: Faites le lien "lire plus" vers l'article

Bonne chance!

1
GavinR