¿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?
Petrus Theron
Necesitarías agregar una condición al callback, por ejemplo if ($post->ID == 45) { ... }
Nick Barrett
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!
MatthewLee
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.
Geoffrey
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 )
landed
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.