Configuración del título usando el filtro wp_title

8 may 2012, 11:39:10
Vistas: 31.8K
Votos: 2

Quiero hacer algo muy simple pero estoy atascado tratando de encontrar dónde en WordPress necesito realizarlo.

Cuando alguien en mi sitio WordPress visita una página de entrada del blog, quiero que el título de la entrada reemplace el título de la página.

Creo que puedo hacer esto con el gancho del filtro wp_title?

Pensé en algo como lo siguiente :-

add_filter('wp_title', 'filter_pagetitle');

function filter_pagetitle($title) {
 $the_post_id    = get_the_ID();
 $the_post_data  = get_post($the_post_id);
 $title = $the_post_data->post_title;

 return $title;
}

Sin embargo, estoy un poco perdido en cuanto a dónde poner esto, pensé que necesitaría estar en loop-single.php ya que quiero que esto se aplique solo a páginas individuales, pero también he visto que esto necesita estar en functions.php dentro de mi tema?

Cualquier ayuda sería apreciada :-)

Rich

1
Comentarios

Para tu información, este método ahora está obsoleto, consulta: https://wordpress.stackexchange.com/a/228063/152624

Jesse Nickles Jesse Nickles
11 jun 2024 22:41:08
Todas las respuestas a la pregunta 1
8

Dado que wp_title() generalmente se llama desde el archivo header.php de tu tema, entonces se ejecuta en cada página de tu WordPress (normalmente en el frontend). Por lo tanto, coloca el hook de filtro y la función en el archivo functions.php de tu tema, y simplemente verifica si es una entrada de blog antes de cambiar el título. Algo así:

add_filter('wp_title', 'filter_pagetitle');
function filter_pagetitle($title) {
    //verifica si es una entrada de blog
    if (!is_single())
        return $title;

    //si llegaste aquí, entonces es una entrada de blog, así que cambia el título
    global $wp_query;
    if (isset($wp_query->post->post_title)){
        return $wp_query->post->post_title;
    }

    //si WordPress no puede encontrar el título, devuelve el predeterminado
    return $title;
}
8 may 2012 11:53:18
Comentarios

Esto es básicamente lo que pensé que funcionaría también, el problema que tengo es que functions.php parece pensar que esto no es una entrada individual (single post), por lo que simplemente retorna la variable $title

Richard Bagshaw Richard Bagshaw
8 may 2012 12:51:49

no tiene nada que ver con el archivo functions.php, se llama cuando tu archivo header.php es incluido y si tiene wp_title() en él.

Bainternet Bainternet
8 may 2012 15:55:47

Estoy de acuerdo con el enfoque, pero ¿por qué no simplemente usar la variable global $post directamente? es decir global $post; $title = $post->post_title; No creo que sea necesario llamar a get_post() aquí.

Chip Bennett Chip Bennett
8 may 2012 17:19:02

@ChipBennett , Sí, eso funcionaría aún mejor, solo estaba siguiendo el formato de la pregunta, actualicé mi respuesta

Bainternet Bainternet
8 may 2012 18:05:16

Otros dos puntos: 1) la wp_title() etiqueta de plantilla ya devuelve el Título de la Entrada en el contexto de una entrada de blog o página estática, por lo que este filtro es en realidad redundante. 2) podrías considerar concatenar el contenido devuelto por $title, para no interferir con Plugins u otras funciones (Plugins SEO, etc.) que filtren el título del documento.

Chip Bennett Chip Bennett
8 may 2012 18:11:10

el global $post no funcionó para mí cuando lo intenté, devolvía un ID pero era el ID de la historia más reciente ingresada en la DB en lugar del que estamos viendo.

Richard Bagshaw Richard Bagshaw
8 may 2012 19:22:20

todos estos comentarios son cosas que he probado, y curiosamente no han funcionado, creo que puede haber un problema con la instalación de WordPress / el tema, gracias de todos modos por la ayuda.

Richard Bagshaw Richard Bagshaw
8 may 2012 19:23:14

Creo que puedes tener Filtros adicionales ya enlazados a tu Título. Intenta desactivar tus Plugins y cambiar a Twenty Twelve, y mira si el problema sigue existiendo.

fischi fischi
19 feb 2013 18:27:51
Mostrar los 3 comentarios restantes