¿Cómo configuro el título de la página dinámicamente?

19

¿Es posible cambiar el título de la página con código?

Por ejemplo, supongamos que el nombre de la página es "Reserve su pedido", pero quiero cambiarlo a "Orden de libro # 123".

Busqué en Google un poco y busqué aquí y no vi nada. Alguien sabe de un complemento o pirateo?

wp_title devuelve el título de la página pero no permite configurar el título de la página: http://codex.wordpress.org/Function_Reference/wp_title

Alex Cook
fuente
¿De dónde vendría el valor? ¿Qué tiene en esa página el valor de # 123?
Sagive SEO

Respuestas:

23

No hay documentación al respecto, pero siempre puede aplicar un filtro the_titlecomo este:

add_filter('the_title','some_callback');
function some_callback($data){
    global $post;
    // where $data would be string(#) "current title"
    // Example:
    // (you would want to change $post->ID to however you are getting the book order #,
    // but you can see how it works this way with global $post;)
    return 'Book Order #' . $post->ID;
}

Ver estos:

http://codex.wordpress.org/Function_Reference/the_title

http://codex.wordpress.org/Function_Reference/add_filter

Jared
fuente
Esto parece anular todos los títulos. ¿Cómo anulo solo el título actual?
Petrus Theron
Debería agregar una condición a la devolución de llamada, por ejemploif ($post->ID == 45) { ... }
Nick Barrett, el
3
the_titlefilter ya no funciona en las últimas versiones de Wordpress, usa document_title_partso pre_get_document_titlefiltra como se detalla en otras respuestas
Brendan Nee
8

A partir de Wordpress 4.4, puede usar el filtro de Wordpress document_title_partspara cambiar el título.

Agregue lo siguiente a functions.php:

add_filter('document_title_parts', 'my_custom_title');
function my_custom_title( $title ) {
  // $title is an array of title parts, including one called `title`

  $title['title'] = 'My new title';

  if (is_singular('post')) {
    $title['title'] = 'Fresh Post: ' . $title['title'];
  }

  return $title;
}
Brendan Nee
fuente
pero ¿dónde pasas el parámetro a un filtro?
Tintinabulator Zea
La función anterior modifica la forma the_title()y el get_the_title()funcionamiento de las funciones, por lo que no es necesario pasar ningún parámetro.
Brendan Nee
5

Para aquellos que desean cambiar el titleatributo del documento , descubrí que usar el wp_titlefiltro ya no funciona. En su lugar, use el pre_get_document_titlefiltro :

add_filter("pre_get_document_title", "my_callback");
function my_callback($old_title){
    return "My Modified Title";
}

Fuente

Nathan ReinstateMonica Arthur
fuente
1
gracias por regresar años después para publicar esta actualización. Había estado usando wp_title en un complemento mío durante años y no me había dado cuenta de que ya no funcionaba hasta ahora y su respuesta me ahorró mucho esfuerzo. ¡Así que gracias!
MatthewLee
@MatthewLee Me alegra saber que te ayudó :)
Nathan ReinstateMonica Arthur
2

Realmente depende si está buscando mostrar un título personalizado para la página actual (es decir, el contenido de la <title></title>etiqueta en el encabezado) o filtrar el título de las páginas en el cuerpo de la página o en los listados.

En el primer caso (el título de la página actual), intente agregar un filtro wp_title()similar: http://codex.wordpress.org/Plugin_API/Filter_Reference/wp_title

Si desea modificar los títulos de las páginas en todos los ámbitos, el filtrado the_title()hará el truco: http://codex.wordpress.org/Plugin_API/Filter_Reference/the_title

nickb
fuente
En realidad, en mi experiencia, necesitas filtrar ambos wp_titley the_titlecubrir ambos.
Geoffrey
No estoy seguro de si es por la depreciación, pero esto no funciona para mí. He intentado combinaciones y filtros en línea y los nuevos apply_filters ('pre_get_document_title', string $ title)
aterrizaron el
lamentablemente tampoco funcionó para mí.
Debbie Kurth
Esta respuesta tiene casi 6 años; como el póster (y alguien que ya no trabaja activamente con WP), sugeriría buscar la última documentación en su lugar.
nickb
1

Cuando tengas Yoast habilitado, debes anular el título de esta manera:

add_filter('wpseo_title', 'custom_titles', 10, 1);
function custom_titles() {

  global $wp;
  $current_slug = $wp->request;

  if ($current_slug == 'foobar') {

    return 'Foobar';
  }
}
leymannx
fuente
-2

¿Así que quieres cambiar el título por página? En primer lugar, configurar una publicación personalizada se encontró con un cuadro. Smashing Magazine cubrió esto recientemente: http://wp.smashingmagazine.com/2011/10/04/create-custom-post-meta-boxes-wordpress/ . A continuación, puede crear una función simple para reemplazar el título si el meta cuadro personalizado tiene un valor.

Hay varios complementos de SEO que también proporcionan esta funcionalidad. Pruebe Yoast SEO para ver ejemplos: http://wordpress.org/extend/plugins/wordpress-seo/

Espero que esto ayude.

Chris Mooney
fuente
1
Estas soluciones no cambiarán el título "dinámicamente" sino "manualmente".
Gustavo
1
peor solución de la historia
Vishal Kumar Sahu