add_theme_support ('title-tag') en conflicto con la función de títulos personalizados

2

' Etiqueta de título ' es una función de tema introducida en la Versión 4.1, y quiero usarla como el título predeterminado de mi tema. Esta función debe agregarse en la acción after_setup_theme o init . Se recomienda aquí . El uso de esta característica funciona perfecto para mí. PERO:

Además, tengo una función de títulos personalizada que se puede habilitar / deshabilitar usando el marco de Option-Tree. Este marco se carga directamente en functions.php . Luego, tengo el resto de las funciones agregadas en el after_setup_theme con prioridad 2:

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

Y este es el filtro agregado para mis títulos personalizados:

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

Cuando deshabilito mi función custom_titles() , la nueva función title-tag funciona a la perfección, pero cuando habilito las personalizadas, devuelve el título dos veces. Exactamente eso:

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

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

El primero es correcto y utiliza la función wp_title() insertada en el header.php entre las etiquetas title , pero la segunda se incluye en la primera línea de la función wp_head() .

De hecho, mi función custom_titles() funcionó perfectamente sin el uso de la nueva función title-tag . Así que parece que el conflicto aparece cuando trato de usar ambos.

¿Crees que sería una buena solución poner ambas características en after_theme_setup prioridad 1 en una declaración condicional simple, o hay una mejor manera de hacerlo? Parece que la solución debería ser más fácil.

ACTUALIZACIÓN: Esto es una locura. Si elimino las etiquetas title del encabezado para usar la nueva función, la comprobación del tema devuelve:

  

REQUERIDO: El tema debe tener etiquetas, idealmente en el   archivo header.php.

Si elimino la nueva función para usar mi función personalizada, la comprobación de tema devuelve:

  

RECOMENDADO: no se hizo referencia a add_theme_support ("title-tag")   Encontrado en el tema. Se recomienda que el tema implemente este   Funcionalidad para WordPress 4.1 y superior.

Para ser honesto: jaja. Al agregar add_theme_support en functions.php , y title etiquetas en header.php , ya que "RECOMIENDAN" & «REQUIRE», respectivamente, ¡siempre devuelve el título dos veces!

    
pregunta Gerard 03.02.2015 - 15:47

2 respuestas

6

Su problema es que no puede usar wp_title() en el tema si el tema ya es compatible con title-tag . El <head> de tu tema debería tener este aspecto:

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

El filtro y el soporte de etiquetas de título:

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;
}

Si haces esto, funcionará perfectamente.

    
respondido por el cybmeta 03.02.2015 - 17:52
3

He encontrado una solución, por lo que estoy seguro de que será útil para otros.

Primero: títulos personalizados

Explicación: si mi función custom_titles() está habilitada, cargue la función en functions.php bajo la prioridad after_theme_setup 2, y muestre las etiquetas title en el archivo header.php .

En functions.php:

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

En 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(); ?>

Entonces: soporte de etiqueta de título

Explicación: si mi custom_titles() está deshabilitado, add_theme_support('title-tag'); en functions.php bajo la prioridad 1. after_theme_setup 1.

Por lo tanto, en functions.php:

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

Acerca de la prioridad after_theme_setup , en mi caso solo se necesita cargar el marco de Option-Tree antes de usar la función ot_get_option() , por lo que podría ser diferente, no necesario, si alguien usa un marco de opciones diferente.

Ahora mi tema tiene la nueva característica de títulos en la Versión 4.1 y títulos personalizados para SEO usando meta-boxes: ambos disponibles (Sé que es un territorio de complementos, pero es bueno tener algunas características esenciales, que en su opinión son «esenciales», integradas en el tema). Gracias a esto, los clientes tendrán más control sobre cómo se muestran los títulos.

    
respondido por el Gerard 03.02.2015 - 17:47

Lea otras preguntas en las etiquetas