Zwei Titel-Tags in meinem Header

7

Ich <head>erstelle ein untergeordnetes Thema und es hat derzeit einen sehr einfachen Abschnitt in header.php:

<head>
  <meta charset="<?php bloginfo( 'charset' ); ?>">
  <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
  <title><?php wp_title( '|', true, 'right' ); ?></title>
  <link rel="profile" href="http://gmpg.org/xfn/11">
  <link rel="pingback" href="<?php bloginfo( 'pingback_url' ); ?>">
  <!--[if lt IE 9]>
  <script type="text/javascript" src="<?php echo get_template_directory_uri(); ?>/js/html5shiv.min.js"></script>
  <![endif]-->

  <?php wp_head(); ?>
</head>

Ich vermute, es wp_head()ist für das zweite <title>Element verantwortlich (es erscheint nur dort im endgültigen HTML), aber andere Dinge, die ich gelesen habe, sagen, dass dies unmöglich ist.

Sollte ich die <title>aus meiner header.php entfernen oder sollte ich meinen Funktionen etwas hinzufügen, um den Titel aus wp_head()(z. B. remove_action('wp_head', 'title') zu entfernen ?

Oder sollte ich etwas ganz anderes tun?

Django Reinhardt
quelle
Mir ist gerade aufgefallen, dass dieses Problem auch im ursprünglichen (übergeordneten) Thema auftritt. Huh!
Django Reinhardt
3
Verwenden Sie Wordpress 4.1 und ein Thema, das für 4.1 geschrieben wurde? Wenn ja, dann sollten Sie diese Zeile irgendwo in functions.php , add_theme_support( 'title-tag' );. Dies sollte die beiden Titel-Tags erklären. Diese Funktion wurde in 4.1 eingeführt und fügt das wp_title()Tag automatisch in die Kopfzeile ein. Wenn ja, kopieren Sie einfach Ihr übergeordnetes Thema header.php in Ihr untergeordnetes Thema und löschen Sie das wp_title()Tag in der header.php
Pieter Goosen
Es war mir ein Vergnügen, froh, dass es funktioniert hat. Viel Spaß
Pieter Goosen
3
@PieterGoosen Ich denke, Ihr Kommentar sollte in eine Antwort gemacht werden ;-)
Birgire
@ Birgire fertig, danke für den Vorschlag. Auch ein bisschen verlängert :-)
Pieter Goosen

Antworten:

10

Die beiden Titel-Tags können so erklärt werden, dass Sie ein Thema verwenden, das für Wordpress4.1 geschrieben wurde und tatsächlich 4.1 verwendet. Ab 4.1 müssen Sie wp_title()den Kopf nicht mehr aufrufen, sondern können ein neues title_tagDesign-Support-Tag verwenden, das das wp_title()Tag automatisch in die Kopfzeile einfügt

Das übergeordnete Thema, das Sie verwenden, tut dies höchstwahrscheinlich bereits. Suchen Sie in Ihrer functions.php nach dieser Codezeile

add_theme_support( 'title-tag' );

Kopieren Sie als Lösung das übergeordnete Thema header.phpin Ihr untergeordnetes Thema und entfernen Sie die wp_title()Funktion einfach aus dem untergeordneten Themaheader.php

Hier ist auch eine großartige Funktion, die Sie aus Gründen der Abwärtskompatibilität berücksichtigen sollten. Sie ist nützlich für Entwickler von übergeordneten Themen: ( Aus dem Codex entnommen )

 if ( ! function_exists( '_wp_render_title_tag' ) ) {
    function theme_slug_render_title() 
    {
        ?>
        <title>
            <?php wp_title( '|', true, 'right' ); ?>
        </title>
        <?php
    }
    add_action( 'wp_head', 'theme_slug_render_title' );
}
Pieter Goosen
quelle
-3

In der function.phpDatei in Ihrem Themenkommentarcode

//add_theme_support( 'title-tag' );
Vunguyen
quelle
1
Dies ist völlig falsch und wird nie funktionieren
Pieter Goosen