it-swarm.com.de

Ändern Sie den Link "Lesen Sie mehr" und fügen Sie eine neue Klasse hinzu

Ich möchte dem Link "Weitere Informationen" eine Klasse hinzufügen. Eigentlich habe ich das:

<?php the_content( 'Read more...' ); ?>

Welche Ausgänge:

<a href="...?p=14#more-14" class="more-link">Read more…</a>

Wie kann ich dem Link eine Klasse (mit PHP) hinzufügen, die Folgendes ausgibt:

<a href="...?p=14#more-14" class="more-link my_new_class">Read more…</a>
4
Alvaro

Was passiert (genau)?

Wenn Sie in Ihrer Vorlage the_content() aufrufen, können Sie sie ohne Parameter aufrufen. Dies bedeutet, dass die Funktion für beide Argumente bereits den Standardwert null hat: Den Link-Text "more" und den booleschen Schalter, mit dem Sie Teaser-Inhalte vor dem Link-Text "more" entfernen können.

Die Funktion the_content() ruft get_the_content() intern auf (und übergibt die Argumente). Anschließend werden alle Rückruffunktionen ausgeführt, die an den the_content- Filter angehängt sind. Also passiert im Grunde genommen nichts was mit dem Link zusammenhängt oder irgendetwas anderes (außer dem Filter) in the_content() - es passiert in get_the_content() .

Und da haben wir den the_content_more_link- Filter.

Der Filter im Kern

apply_filters( 
    'the_content_more_link',
    ' <a href="' . get_permalink() . "#more-{$post->ID}\" class=\"more-link\">$more_link_text</a>",
    $more_link_text
);

Filter in Aktion

Die beiden Argumente nach dem Filternamen (1st arg) sind die zugreifbaren Argumente in angehängten Rückruffunktionen.

// Example: Somewhere in core, a plugin or a theme
$output = apply_filters( 'some_filter', $arg_one, $arg_two );

// Example: Somewhere in a custom plugin
// Attach the filter: Attach filter name, callback function name, priority, number of taken args
add_filter( 'some_filter', 'wpse63748_callback_function', 10, 2 );
function wpse63748_callback_function( $arg_one, $arg_two )
{
    // Do something with Arg One = modify the output
    // You have Arg two to help you

    // Always return the first arg for filter callback functions.
    return $arg_one;
}

Ändern Sie den "mehr" -Link

Nun das aktuelle/echte Plugin:

/** Plugin Name: (#63748) Modify the »more«-link. */
add_action( 'the_content_more_link', 'wpse63748_add_morelink_class', 10, 2 );
function wpse63748_add_morelink_class( $link, $text )
{
    return str_replace(
        'more-link',
        'more-link CUSTOM_CLASSES_HERE',
        $link
    );
}

Fügen Sie einfach Ihre Klassen hinzu, in denen Sie CUSTOM_CLASSES_HERE lesen, und laden Sie sie dann in Ihr Plugins-Verzeichnis hoch oder entfernen Sie den Kommentar Plugin Name: ... und verwenden Sie ihn in Ihrer Datei themes functions.php.

11
kaiser

Sie können auch einfach einen Filter zum ursprünglichen Link "more ..." hinzufügen. Fügen Sie einfach diesen Code zu Ihrer function.php-Datei hinzu:

function yourtheme_content_more() {
   $link = get_permalink('');
   $new_link = '<span class="see_more"><a class="button" href="' . esc_url($link) . '">See more from this...</a></span>';

   return $new_link;
}
add_filter('the_content_more_link', 'yourtheme_content_more');
1
Sarderon

Sie können den weiteren Link mithilfe des Filters "the_content_more_link" vollständig ersetzen. Fügen Sie einfach Ihre Klasse hinzu. Siehe "custom-class" im folgenden Code:

function new_content_more($more) {
       global $post;
       return ' <a href="' . get_permalink() . "#more-{$post->ID}\" class=\"more-link custom-class\">Read More...</a>";
}   
add_filter( 'the_content_more_link', 'new_content_more' );
1
jb510