add_theme_support ('title-tag') em conflito com a função de títulos personalizados

2

' Tag de título ' é um recurso de tema introduzido na Versão 4.1, e eu quero usá-lo como o título padrão de meu tema. Esse recurso deve ser adicionado na ação after_setup_theme ou init . Recomenda-se aqui . O uso desse recurso funciona perfeito para mim. MAS:

Além disso, tenho uma função de títulos personalizados que pode ser ativada / desativada usando a estrutura Option-Tree. Essa estrutura é carregada diretamente em functions.php . Então, eu tenho o resto das funções adicionadas no after_setup_theme com prioridade 2:

add_action( 'after_setup_theme', 'theme_functions', 2);

E este é o filtro adicionado para meus títulos personalizados:

add_filter( 'wp_title', 'custom_titles', 10, 2 );

Quando desativo minha função custom_titles() , o novo recurso title-tag funciona perfeito, mas quando eu habilito os personalizados, ele retorna o título duas vezes. Exatamente que:

<title>Front page meta title example</title>

Front page meta title example<title></title>

O primeiro está correto, e está usando a função wp_title() inserida no header.php entre as tags title , mas a segunda está incluída na primeira linha da função wp_head() .

Na verdade, minha função custom_titles() funcionou perfeitamente sem o uso do novo recurso title-tag . Então parece que o conflito aparece quando eu tento usar os dois.

Você acha que seria uma boa solução colocar os dois recursos em after_theme_setup priority 1 em uma instrução condicional simples ou há uma maneira melhor de fazer isso? Parece que a solução deve ser mais fácil.

ATUALIZAÇÃO: Isso é loucura. Se eu remover as tags title do cabeçalho para usar o novo recurso, a verificação do tema retornará:

  

REQUERIDO: O tema precisa ter tags, idealmente no   arquivo header.php.

Se eu remover o novo recurso para usar minha função personalizada, a verificação de tema retornará:

  

RECOMENDADO: Nenhuma referência a add_theme_support ("title-tag") foi   encontrado no tema. Recomenda-se que o tema implemente este   funcionalidade para o WordPress 4.1 e superior.

Para ser sincero: LOL. Adicionando add_theme_support em functions.php e title tags em header.php à medida que eles "RECOMENDAMEM" & «REQUIRE», respectivamente, retorna sempre o título duas vezes!

    
por Gerard 03.02.2015 / 15:47

2 respostas

6

Seu problema é que você não pode usar wp_title() no tema se o tema já suportar title-tag . O <head> do seu tema deve ficar assim:

<head>
    <meta charset="<?php bloginfo( 'charset' ); ?>">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <?php wp_head(); ?>
</head>

O suporte para filtro e tag title:

add_action( 'after_setup_theme', 'theme_functions' );
function theme_functions() {

    add_theme_support( 'title-tag' );

}

add_filter( 'wp_title', 'custom_titles', 10, 2 );
function custom_titles( $title, $sep ) {

    //Check if custom titles are enabled from your option framework
    if ( ot_get_option( 'enable_custom_titles' ) === 'on' ) {
        //Some silly example
        $title = "Some other title" . $title;;
    }

    return $title;
}

Se você fizer isso, funcionará perfeitamente.

    
por cybmeta 03.02.2015 / 17:52
3

Eu encontrei uma solução, então tenho certeza que será útil para os outros.

Primeiro: títulos personalizados

Explicação: Se minha função custom_titles() estiver ativada, carregue a função em functions.php sob after_theme_setup priority 2 e mostre as tags title no arquivo header.php .

Em functions.php:

if ( ot_get_option( 'enable_custom_titles' ) === 'on' ) {
    // The custom titles function
}

No header.php:

<?php if ( ot_get_option( 'enable_custom_titles' ) === 'on' ) : ?>
<title><?php wp_title( '|', true, 'right' ); ?></title>
<?php endif; ?>

<!-- The next will return the new WP titles feature if custom titles are off -->
<?php wp_head(); ?>

Então: suporte a tag title

Explicação: Se meu custom_titles() estiver desabilitado, add_theme_support('title-tag'); in functions.php sob a prioridade after_theme_setup .

Então, em functions.php:

if ( ot_get_option( 'enable_custom_titles' ) === 'off' ) {
    add_theme_support( 'title-tag' );
}

Sobre a after_theme_setup priority, no meu caso, é necessário carregar a estrutura Option-Tree antes de usar a função ot_get_option() , para que ela possa ser diferente - não necessária - se alguém usar uma estrutura de opções diferente. / p>

Agora, meu tema tem o novo recurso de títulos da versão 4.1 e títulos personalizados para SEO usando meta-caixas: ambos disponíveis. (Eu sei que é território do plugin, mas é bom ter alguns recursos essenciais - "essencial" na minha opinião - integrados no tema). Graças a isso, os clientes terão mais controle sobre como os títulos são exibidos.

    
por Gerard 03.02.2015 / 17:47

Tags