¿Cómo Establecer el Título de la Página Dinámicamente?
¿Es posible cambiar el título de la página con código?
Por ejemplo, digamos que el nombre de la página es "Reservar su Pedido", pero quiero cambiarlo a "Pedido #123".
He buscado en Google y aquí pero no he encontrado nada. ¿Alguien conoce algún plugin o truco?
wp_title devuelve el título de la página pero no permite establecer el título de la página: http://codex.wordpress.org/Function_Reference/wp_title
No hay documentación al respecto, pero siempre puedes aplicar un filtro a the_title
de esta manera:
add_filter('the_title','some_callback');
function some_callback($data){
global $post;
// donde $data sería string(#) "título actual"
// Ejemplo:
// (deberías cambiar $post->ID por como sea que obtengas el número de pedido del libro,
// pero puedes ver cómo funciona de esta manera con global $post;)
return 'Pedido de Libro #' . $post->ID;
}
Consulta estos enlaces:

Esto parece sobrescribir todos los títulos. ¿Cómo puedo sobrescribir solo el título actual?

Necesitarías agregar una condición al callback, por ejemplo if ($post->ID == 45) { ... }

A partir de WordPress 4.4, puedes usar el filtro de WordPress document_title_parts
para cambiar el título.
Añade lo siguiente a functions.php
:
add_filter('document_title_parts', 'my_custom_title');
function my_custom_title( $title ) {
// $title es un array de partes del título, incluyendo una llamada `title`
$title['title'] = 'Mi nuevo título';
if (is_singular('post')) {
$title['title'] = 'Publicación Reciente: ' . $title['title'];
}
return $title;
}

Para aquellos que deseen cambiar el atributo title
del documento, encontré que usar el filtro wp_title
ya no funciona. En su lugar, utiliza el filtro pre_get_document_title
:
add_filter("pre_get_document_title", "my_callback");
function my_callback($old_title){
return "Mi Título Modificado";
}

gracias por regresar años después para publicar esta actualización. Había estado usando wp_title en un plugin mío durante años y no me había dado cuenta de que ya no funcionaba hasta ahora y tu respuesta me ahorró mucho esfuerzo. ¡Así que gracias!

Realmente depende si estás buscando mostrar un título personalizado para la página actual (es decir, el contenido de la etiqueta <title></title>
en el encabezado) o filtrar el título de las páginas en el cuerpo de la página o en listados.
En el primer caso (el título de la página actual), intenta agregar un filtro para wp_title()
de esta manera:
http://codex.wordpress.org/Plugin_API/Filter_Reference/wp_title
Si deseas modificar los títulos de las páginas de manera general, filtrar the_title()
hará el trabajo:
http://codex.wordpress.org/Plugin_API/Filter_Reference/the_title

En mi experiencia, realmente necesitas filtrar tanto wp_title
como the_title
para cubrir ambos casos.

No estoy seguro si es por la depreciación, pero esto no funciona para mí. He probado combinaciones y filtros en línea y el nuevo apply_filters( 'pre_get_document_title', string $title )

Actualmente, la forma más fácil de hacer esto es utilizando una línea de JavaScript.
Coloca el siguiente código en la plantilla:
<script>document.title = "<?php echo $new_title; ?>";</script>
Este código no tiene que estar en el encabezado HTML, puede colocarse en el cuerpo del HTML.
