Wie kann ich mit the_excerpt () auf einer statischen Startseite einen Link "Read More" erstellen?


8

Ich arbeite an einer Website, die eine statische Startseite verwendet. Es zeigt auch den neuesten Blog-Beitrag. Dies wurde erreicht, indem eine Seite erstellt und eine benutzerdefinierte Seitenvorlage verwendet wurde.

Manchmal ist der Blog-Beitrag zu lang, daher möchte ich the_excerpt verwenden, um ihn automatisch zu verkürzen, ohne dass ein weiteres Tag erforderlich ist.

So weit, ist es gut. The_excerpt erstellt jedoch keinen "read more" -Link. Dies ist ein ziemlich häufiges Problem, deshalb habe ich hinzugefügt:

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

zu meiner Datei functions.php.

Ich habe diesen Code tatsächlich ohne Probleme auf einer anderen Site verwendet, aber aus irgendeinem Grund funktioniert er in diesem Fall nicht. Meine anfängliche Vermutung war, dass es daran lag, dass es auf einer statischen Seite aufgerufen wird.

Die Website ist http://stuandjessproductions.com . Das Thema ist Central von QODE, ​​und ich verwende ein benutzerdefiniertes untergeordnetes Thema.

BEARBEITEN

Hinzufügen von Code von der Vorlagenseite gemäß Anforderung. Dies ist nicht die ganze Seite, sondern nur das relevante Stück für den Nachrichtenbeitrag:

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

Wie lautet der Code der Seitenvorlage?
Michael

Ich habe einen Teil des Codes von der Vorlagenseite hinzugefügt (das relevante Bit). Wenn du das Ganze sehen willst, kann ich es posten ... aber es ist ein bisschen lang.
Einberufung

Antworten:


14

Wenn Sie das Feld Auszug mit Text auf der Seite nach der Bearbeitung füllen , the_excerpt()fügt die Funktion am Ende der Kurzbeschreibung keine weiteren Informationen oder ... hinzu . Lesen Sie mehr ist nur enthalten, wenn Auszug leer gesetzt ist und dies kein Fehler ist, sondern eine Funktion.

Jetzt besteht die Lösung darin, zu vermeiden, dass der excerpt_moreFilter mehr liest, und den the_excerptHaken zu verwenden. Es excerpt_moresollte jedoch das Leerzeichen gesetzt werden, um sicherzustellen, dass Double Read More nicht angezeigt wird. Also, der Code, den Sie brauchen -

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

Der obige Code könnte zu Ihrer Themes functions.php-Datei gehen.


Ich habe dem Textfeld "Auszug" im Beitrag nichts hinzugefügt und habe auch nicht vor, dies zu tun. Wie gesagt, die Idee ist, die Dinge für den Kunden so wartungsarm wie möglich zu gestalten. Der aktuelle Code macht die Post zu 55 Wörtern gestutzt, oder was auch immer der Standard ist, und fügt die Auslassungspunkte. Das Problem ist, dass meine normale Methode, diese Auslassungspunkte in einen "Read More" -Link umzuwandeln, nicht zu funktionieren scheint.
Einberufung

Also habe ich Ihren Code ausprobiert und er scheint zu funktionieren. Das einzige Problem ist, ich bekomme eine doppelte Ellipse. Es ist jetzt live auf stuandjessproductions.com , wenn Sie sehen möchten. Hast du eine Idee?
Einberufung

Ich sollte hinzufügen, dass ich meinen ursprünglichen Code aus functions.php entfernt habe.
Einberufung

Ich habe diese Frage als Antwort markiert, aber die Lösung besteht darin, zwei "read more" -Tags zu injizieren. Ich habe gerade die Auslassungspunkte aus dem zweiten Tag entfernt, was für mich funktioniert, aber es ist nicht wirklich perfekt.
Einberufung

1
@NavnishBhardwaj - 21 ist hier die Filterpriorität. Dort können Sie jede positive Zahl mehr als 0.
Shazzad
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.