Configuración del título usando el filtro wp_title
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
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;
}

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

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.

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í.

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

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.

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.

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.
