wp_title Filter in einer Klasse

  • Hallo zusammen

    Ich versuche gerade mittels einem Filter, den Titel der Seite zu bearbeiten.
    Wenn ich den Filter in der functins.php meines Themes nutze, funktioniert dieser einwandfrei.

    PHP
    add_filter( 'wp_title', 'set_page_title' );
    function set_page_title( $orig_title ) {
        return 'ABC';
    }

    Doch sobald ich den Filter in einer Klasse meines Plugins ausführe, geht gar nichts mehr (auch keine Fehlermeldung).

    PHP
    class myClass {
        public function myMethod() {
            add_filter( 'wp_title', array($this, 'set_page_title') );
        }
    
    
        public function set_page_title( $orig_title ) {
            return 'test';
        }
    }

    Kennt sich da jemand aus?

    PS: Die Methode wird augerufen. Das habe ich geprüft.

    • 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

  • Welche Methode wird aufgerufen?
    Wenn Du die Methode myMethod meinen solltest, so rufst Du mit dieser Methode die Funktion add_filter auf, die wiederum nur eine Callback-Funktion oder ein Array aufrufen möchte und nebenher noch ein paar globale Variablen, wie $wp_filter und $merged_filters. Die Funktion add_filter:

    http://core.trac.wordpress.org/browser/tags/3…udes/plugin.php

    Doch [COLOR=#000000][COLOR=#0000BB]add_filter[/COLOR][/COLOR] wurde ja nicht innerhalb der Klasse als Methode definiert, sondern Du greifst da nur drauf zu, wie auf PHP-Funktionen, die überall zur Verfügung stehen, gleich in welchem Gültigkeitsbereich.

    Dieses Beispiel könnte ich da eher nachvollziehen:

    http://stackoverflow.com/questions/3241…ordpress-filter

    Dieses hier nicht ganz, nun gut, müsste man erst einmal ausprobieren:

    http://stackoverflow.com/questions/1053…side-of-a-class

    Einmal editiert, zuletzt von Melewo (17. November 2013 um 19:16)

  • Hier habe ich mal die add_filter durch add_filterersatz ersetzt und in der Reihenfolge funktioniert es schon einmal. Ist ja nun nicht die richtige Reihenfolge, doch was passiert, wenn du vor add_filter ein return einfügst?

  • Wenn es dann endlich klappt, dann fragt man sich, warum man nicht gleich darauf kam, so einfach wie das eigentlich ist. So funktioniert es zumindest:

    Nicht mit "wp_title", doch mit "the_title".

    Einmal editiert, zuletzt von Melewo (17. November 2013 um 22:08)

  • Danke für deine Antwort.

    Habe nochmals ein paar Tipps von dir ausprobiert. Leider ohne Erfolg. Ich glaube langsam weiss ich wieso es nicht klappt. Hätte das wohl erwähnen sollen.

    Ich habe ein Plugin für Shortcodes. Und genau ein solcher Shortcode ruft diese Methode auf ("myMethod"). Vermutlich wurde da der Filter "wp_title" bereits abgehandelt. Das könnte die Lösung sein. Fragt sich nur, wie ich jetzt zu meinem Ergebnis komme. Vermutlich muss ich mir einen anderen Weg ausdenken...

  • Das letzte funktioniert doch nun, dass brauchst Du doch nur so ablegen wie es ist und aktivieren. Das habe ich nicht mit Shortcode eingefügt, das habe ich nur so wie es ist in das Plugin-Verzeichnis geworfen und aktiviert.

    Mit Shortcode lässt sich so etwas kombinieren, muss ich mal überlegen, wie ich das beim letzten gemacht habe.

    Einmal editiert, zuletzt von Melewo (17. November 2013 um 22:28)

Jetzt mitmachen!

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