Template-Tag the_excerpt(); verlinken ?

  • Mittels dem Template-Tag the_excerpt();, werden die Artikel ja verkürzt und dann mit einem [...] abgeschnitten.

    Ich möchte nun jedoch das [...] mit dem Artikel verlinken, damit die Leser direkt auf [...] klicken können.

    Ist das möglich und wenn ja, wie ?

    Die Datei formatting.php ist dafür ja zuständing, aber wie stelle ich das dort an ?

    Zitat

    if (count($words) > $excerpt_length) {
    array_pop($words);
    array_push($words, '[...]');
    $text = implode(' ', $words);

    LG

    • Anzeige

    Hallo!

    Wenn du gerade an deiner Website arbeitest oder dein aktuelles Hosting überdenkst: Wir betreiben mit NetzLiving eine Hosting-Plattform, die speziell auf Performance, Sicherheit und einfache Verwaltung ausgelegt ist.

    • ✔️ Schnelle Ladezeiten (optimiert für WordPress & Co.)
    • ✔️ Deutsche Server & DSGVO-konform
    • ✔️ Persönlicher Support (kein 0815-Ticket-System)

    Mehr erfahren

  • Schreib dir eine Filterfunktion auf "the_excerpt", etwa so:

    PHP
    function link_hellip_in_excerpt( $content ) {
     global $post;
     return substr( $content, -5 ) . '<a href="' . get_the_permalink() . '">[...]</a>';
    }
    add_filter( 'the_excerpt', 'link_hellip_in_excerpt');


    Das ganze in die functions.php des Themes, oder mach ein Plugin draus.

    (Achja, aus dem Bauch heraus getippt und ungetestet! ;-))

  • Klappt aber nicht so. :D

    Code
    function link_hellip_in_excerpt( $content ) {  global $post;  return substr( $content, -5 ) . '[URL="http://www.gruening.me/wp-admin/%27%20.%20get_the_permalink%28%29%20.%20%27"][...][/URL]'; } add_filter( 'the_excerpt', 'link_hellip_in_excerpt');   
    Warning: Cannot modify header information - headers already sent by (output started at /home/grueningweb/public_html/gruening/wp-content/themes/librio/functions.php:6) in /home/xxxx/public_html/gruening/wp-admin/theme-editor.php on line 70

    Folgendes ist in der Datei schon vorhanden:

    PHP
    <?php
    if ( function_exists('register_sidebar') )
        register_sidebar(array(
            'before_widget' => '<div class="block">',
            'after_widget' => '</div>',
            'before_title' => '<h3 class="widgettitle">',
            'after_title' => '</h3>',
        ));
    ?>
  • Wirf das ?> mal raus (das Script wird am Dateiende implizit geschlossen, und so kannst du den Header-Fehler etwas umgehen) und dann schreibst du meinen Code einfach ans Dateiende (also da wo vorher das ?> stand).

  • auch nicht. ;)

    http://www.gruening.me/wordpress-27-beta-im-einsatz.html
    Fatal error: Call to undefined function get_the_permalink() in /home/xxxx/public_html/gruening/wp-content/themes/librio/functions.php on line 11

  • Kein get_the_permalink()? :shock::confused:

    Okay, dann versuchs mal so:

    Code
    function link_hellip_in_excerpt( $content ) {
     global $post[COLOR="#ff0000"]_ID[/COLOR];
     return substr( $content, -5 ) . '<a href="' . get_permalink( [COLOR="Red"]$post_ID[/COLOR] ) . '">[...]</a>';
    }


    (Frag mich jetzt aber nicht ob "ID" groß oder klein, oder groß und klein... aber ich glaub so ists richtig)

  • Ah okay, ich seh grad "the_excerpt" wirkt sich nur aus, wenn auch tatsächlich ein Excerpt eingegeben wurde - nicht auf das automatische Excerpt. Dann anders(jetzt wirds hacky!): :-D

    Code
    function link_hellip_in_excerpt( $content ) {
     global $post_ID;
     return [COLOR="Red"]preg_replace( '~\[\.\.\.\]$~', ' <a href="' . get_permalink( $post_ID ) . '">[...]</a>', $content);[/COLOR]
    }
    add_filter( 'the_excerpt', 'link_hellip_in_excerpt');
    add_filter( '[COLOR="#ff0000"]the_content[/COLOR]', 'link_hellip_in_excerpt');
  • passiert auch nix. Ist ne schwere Geburt. :D

  • Okay, ich vermute mal, dass da das </p>-Tag mit reinspielt... wir könnten die Priorität des Filters hochsetzen, oder das </p>-Tag mit in die Regel aufnehmen.

    Probieren wirs mal mit der Prio:

    PHP
    add_filter( 'the_excerpt', 'link_hellip_in_excerpt', 9);
    add_filter( 'the_content', 'link_hellip_in_excerpt', 9);

    PS: "Anischten" ;-)

  • :-D

    Übrigens, noch ein kleiner Hinweis - mit dem Code kannst du natürlich auch das [...] mit einem beliebigen Text ersetzen. Den einfach hier rein:

    Code
    return preg_replace( '~\[\.\.\.\]$~', ' <a href="' . get_permalink( $post_ID ) . '">[COLOR="Blue"][B][...][/B][/COLOR]</a>', $content);
  • :-D

    Übrigens, noch ein kleiner Hinweis - mit dem Code kannst du natürlich auch das [...] mit einem beliebigen Text ersetzen. Den einfach hier rein:

    Code
    return preg_replace( '~\[\.\.\.\]$~', ' <a href="' . get_permalink( $post_ID ) . '">[COLOR=Blue][B][...][/B][/COLOR]</a>', $content);

    Danke, sieht schon viel besser so aus. :)

    LG

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!