Due tag title nell'header

22 mar 2015, 19:53:27
Visualizzazioni: 14.7K
Voti: 7

Sto sviluppando un child theme e attualmente ha una sezione <head> molto semplice nel file 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>

Presumo che wp_head() sia responsabile del secondo elemento <title> (appare proprio lì nell'HTML finale), ma altre fonti dicono che questo è impossibile.

Dovrei rimuovere il tag <title> dal mio header.php, o dovrei aggiungere qualcosa alle mie funzioni per rimuovere il titolo da wp_head() (es. remove_action('wp_head', 'title') ?

O dovrei fare qualcos'altro completamente diverso?

7
Commenti

Ho appena notato che questo problema si verifica anche nel tema originale (genitore). Uh!

Django Reinhardt Django Reinhardt
22 mar 2015 20:06:18

Stai usando WordPress 4.1 e un tema scritto per la versione 4.1? Se è così, dovresti avere da qualche parte in functions.php questa riga: add_theme_support( 'title-tag' );. Questo dovrebbe spiegare i due tag del titolo. Questa funzionalità è stata introdotta in 4.1 e aggiunge automaticamente il tag wp_title() nell'header. Se è così, copia semplicemente il file header.php del tuo tema genitore nel tuo tema figlio e elimina il tag wp_title() nell'header.php

Pieter Goosen Pieter Goosen
22 mar 2015 20:19:24

È stato un piacere, sono contento che abbia funzionato. Buon lavoro

Pieter Goosen Pieter Goosen
22 mar 2015 20:39:22

@PieterGoosen Penso che il tuo commento dovrebbe essere trasformato in una risposta ;-)

birgire birgire
22 mar 2015 22:02:24

@birgire fatto, grazie per il suggerimento. L'ho anche ampliato un po' :-)

Pieter Goosen Pieter Goosen
23 mar 2015 06:27:20

ottimo, sono sicuro che sarà utile visto che sembra essere un problema comune. @PieterGoosen

birgire birgire
23 mar 2015 10:49:38

@birgire sembra proprio di sì :-). Spero che tutti lo trovino utile nel prossimo futuro.

Pieter Goosen Pieter Goosen
23 mar 2015 11:00:04
Mostra i restanti 2 commenti
Tutte le risposte alla domanda 2
0
10

I due tag title possono essere spiegati dal fatto che stai utilizzando un tema scritto per WordPress 4.1 e in realtà stai usando la versione 4.1. A partire dalla 4.1 non è più necessario chiamare wp_title() nell'header, puoi invece utilizzare il nuovo tag di supporto per il tema title_tag che aggiunge automaticamente il tag wp_title() nell'header.

Il tema genitore che stai utilizzando molto probabilmente lo fa già. Cerca nel tuo functions.php questa riga di codice:

add_theme_support( 'title-tag' );

Come soluzione, copia il file header.php del tema genitore nel tuo tema child e semplicemente rimuovi la funzione wp_title() dal file header.php del tema child.

Ecco anche un'ottima funzione da tenere a mente per la compatibilità con le versioni precedenti e utile per gli sviluppatori di temi genitori: (Preso dal codex)

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' );
}
23 mar 2015 06:26:40
1
-3

Nel file function.php del tuo tema commenta il codice

//add_theme_support( 'title-tag' );
3 feb 2016 11:50:55
Commenti

Questo è completamente sbagliato e non funzionerà mai

Pieter Goosen Pieter Goosen
3 feb 2016 12:01:17