wake-up-neo.com

Change the title of page dynamic of a plugin from

Jede WordPress-Seite kann mit zwei Titeln beschrieben werden:

  1. Der Titel der Seite/des Beitrags, der innerhalb der Seite/des Beitrags über den Funktionsaufruf the_title() angezeigt wird

  2. Das HTML-Tag <title></title>, das den Titel oben im Browser anzeigt

Ich schreibe ein Plugin, das an einer Stelle den Titel einer Seite dynamisch ändern sollte (nun, es sollte beide oben beschriebenen Titel ändern).

Für Schritt 1 oben habe ich mehrere Lösungen für den Stapelüberlauf gefunden (z. B. this oder this ). Diese eignen sich nur für Schritt 1 oben.

Für Schritt 2 habe ich diese Lösung gefunden; Kurz gesagt, so funktioniert es:

add_filter('wp_title', 'change_page_title');
function change_page_title ($title) {

    // Do some magic, and eventually modify $title then return it
    return $title;
}

Aber die vorgeschlagene Lösung funktioniert bei mir nicht. und mit nicht funktioniert meine ich, dass der Filter die zugehörige Funktion nicht aufruft. Ich bin mir nicht sicher, wo das Problem liegt. liegt es daran, dass dieser filter aus dem plugin heraus aufgerufen wird und nicht das theme? (Nur zu Ihrer Information, ich habe keinen Zugriff auf die Themendateien, daher muss dies über das Plugin erfolgen.).

Wie kann ich das erreichen? Wie kann ich den Browsertitel einer Seite innerhalb eines Plugins dynamisch ändern?

Vielen Dank.

5
Greeso

Ein Beitrag oder eine Seite hat nur einen Titel, der Titel <title> ist der Dokumenttitel.

Der Filter wp_title filtert die Ausgabe der Funktion wp_title(), mit der zuvor der Titel des Dokuments ausgegeben wurde. In WordPress 4.1 wurde die Unterstützung von Title-Tags in Themes eingeführt und wp_get_document_title() wird anstelle von wp_title() verwendet. Wenn Ihr Design also title-tag unterstützt, hat der wp_title-Filter keine Auswirkung, Sie können jedoch einen anderen Filter verwenden:

pre_get_document_title , um einen neuen Titel festzulegen

add_filter( 'pre_get_document_title', 'cyb_change_page_title' );
function cyb_change_page_title () {

    return "Custom title";

}

document_title_separator um das Titeltrennzeichen zu filtern

add_filter('document_title_separator', 'cyb_change_document_title_separator');
function cyb_change_document_title_separator ( $sep ) {

    return "|";

}

documente_title_parts zum Filtern verschiedener Teile des Titels: Titel, Seitennummer, Slogan und Site-Name.

add_filter( 'document_title_parts', 'cyb_change_document_title_parts' );
function cyb_change_document_title_parts ( $title_parts ) {

    $title_parts['title'] = 'Custom title';
    $title_parts['page'] = 54;
    $title_parts['tagline'] = "Custom tagline";
    $title_parts['site'] = "My Site"; // When not on home page

    return $title_parts;

}

PD: Sie können mit current_theme_supports( 'title-tag' ) prüfen, ob das Theme title-tag unterstützt oder nicht.

8
cybmeta

Verwenden Sie diesen Code auf Ihrer page.php oder Seite, die Sie ändern möchten <pre> <title><?php wp_title(); ?> | <?php bloginfo(‘name’); ?></title> </pre>

0