Ausgabe von get_adjacent_post_link() ändern

  • Hallo zusammen,

    derzeit stoße ich, trotz eigentlich recht guter Kenntnisse von WordPress an ein mir derzeit nicht lösbares Problem.

    Es geht sich um folgendes:

    Die Funktion

    Code
    get_adjacent_post_link()

    aus der Datei wp-includes/link-template.php ist für die Ausgabe der Links von

    Code
    the_post_navigation()

    zuständig (bzw. für 2 Funktionen auf die the_post_navigation() zugreift).

    Wie man im Core sehen kann, besitzt die Funktion

    Code
    get_adjacent_post_link()

    ja einen Filter Hook. Diesen würde ich gerne Ansprechen um die Ausgabe des Linkes zu ändern, sehe aber derzeit keine Lösung dies auch umzusetzen, da beim Ansprechen des Filter Hooks z.B. durch

    Code
    add_action( 'next_post_link', 'my_postlink' );

    .

    Habe im Übrigens auch schon versucht den Hook mit folgender Schreibweise anzusprechen:

    Code
    add_action( "{$adjacent}_post_link", 'fk_bootstrap_postlink' );

    aber auch dies ohne erfolg.


    Wahrscheinlich sehe ich gerade den Wald vor lauter Bäumen nicht und hoffe das mir hier einer weiter Helfen kann.

    • 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

  • Eine [FONT=courier new]action[/FONT] ist kein [FONT=courier new]filter[/FONT]. Bei einem Filter kann ein Wert verändert werden. Eine Action wird aufgerufen, wenn WordPress an der Stelle im Code vorbeikommt, ohne Werte zu übergeben.

    In Deinem Fall würdest Du einen Filter verwenden, z.B. [FONT=courier new]add_filter( 'next_post_link', ...[/FONT] oder [FONT=courier new]add_filter( 'previous_post_link', ... [/FONT]wie auch im Code beschrieben.

    Einmal editiert, zuletzt von b3317133 (9. Februar 2017 um 23:54)

  • Eine [FONT=&quot]action[/FONT] ist kein [FONT=&quot]filter[/FONT]. Bei einem Filter kann ein Wert verändert werden. Eine Action wird aufgerufen, wenn WordPress an der Stelle im Code vorbeikommt, ohne Werte zu übergeben.

    In Deinem Fall würdest Du einen Filter verwenden, z.B. [FONT=&quot]add_filter( 'next_post_link', ...[/FONT] oder [FONT=&quot]add_filter( 'previous_post_link', ... [/FONT]wie auch im Code beschrieben.

    Du hast natürlich vollkommen recht, mein Fehler beim Kopieren, hatte es natürlich mit add_filter() probiert aber auch hier ohne erfolg der gewünschten Änderung. Der oben genannte Code war gestern Abend nur ein verzweifelter versuch noch, das hab ich beim kopieren hier her nicht mehr bedacht.

    Das Problem was ich konkret habe ist das beim Nutzen des Hooks sogar die Ausgabe von next_post_link oder previous_post_link der entsprechende Link aus der funktion the_post_navigation() verschwindet. Bekomm das Problem aber irgendwie nicht gelöst bis her.

  • Da ich den gesamten Code jetzt schon ein paar mal komplett neu/umgeschrieben habe, hier mal das Aktuelleste mit dem ich Arbeite:

    Ist eigentlich bis auf das class="nav-link in der Variable $string der gleiche Code wie von der Funktion get_adjacent_post_link().

  • Derzeit filterst Du nur den "next" Link. Was genau willst Du erreichen?

    Wenn Du in den Links nur eine class hinzufügen willst, würde das in etwa so gehen (einfach runtergetippt und ungetestet):

    Code
    function my_post_link( $output ) {
        $output = str_replace(
            'href="',
            'class="nav_link" href="',
            $output
        );
        return $output;
    }
    add_filter( 'next_post_link', 'my_post_link' );
    add_filter( 'previous_post_link', 'my_post_link' );

    Einmal editiert, zuletzt von b3317133 (10. Februar 2017 um 09:25)

  • Manchmal ist der einfachste Weg der leichteste.

    Dein Beispiel, musste nur noch um ein return $output; ergänzt werden um mein gewünschtes Ergebnis zu liefern.

    Das ich in meinen "Beispiel Code" nur den next Link angesprochen hab ist richtig, wollte ja auch erstmal nur das Script zum laufen bekommen. Aber deine Lösung ist genauso effektiv, vielen dank.

  • Der leichteste Weg wäre wohl ganz ohne PHP die Formatierung der Links via CSS über eine im Theme ohnehin vorhandene class eines übergeordneten Elements.

    Daher immer möglichst genau beschreiben, was man eigentlich erreichen will...

Jetzt mitmachen!

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