Añadir texto al título de los entradas en WordPress dependiendo de la categoría

Si queremos añadir texto al título de los las entradas de WordPress de una categoría específica, aquí te explico una manera de hacerlo.

Nos ponemos en situación

Para ponernos en situación pongamos que tenemos una página web de una inmobiliaria donde vamos poniendo anuncios de pisos en venta, en alquiler, vendido, alquilado, etc

De momento lo estamos gestionando con categorías que podrían ser las que he comentado:

  • En venta.
  • En alquiler.
  • Vendido.
  • Alquilado.

Cada vez que publicamos un piso en venta le ponemos un título en plan: Piso de 90 metros cuadrados en el centro. Por poner un ejemplo.

Después rellenamos todo el contenido que necesitemos y le asignamos por ejemplo la categoría «En venta«.

¿Qué queremos hacer?

Pues bien, lo que queremos es que a partir de ahora cuando una entrada tiene establecida la categoría «En venta» se modifique el título de la entrada para que los visitante vean el título siguiente: «EN VENTA: titulo….«.

Es sólo un ejemplo para que lo entendamos pero habría que hacer lo mismo con el resto de categorías para que cuando un piso «en venta» se venda y le asignemos la categoría «Vendido«, el título que se muestre sea: «VENDIDO: título…«.

Para que nos quede claro, no queremos que se modifique el título en si, ok? Porque cuando cambiemos de categoría sería más complejo ya que tendríamos que quitar el texto existente del comienzo y luego añadir el nuevo correspondiente a la categoría.

¿Cómo lo vamos a hacer?

Voy a intentar hacerlo lo mas sencillo posible para que lo entendamos bien.

En primer lugar damos por sentado que ya tenemos creadas las categorías que hemos comentado antes.

Ahora vamos a crear una función que insertaremos en el fichero functions.php de nuestro tema en la que comprobaremos con un «if» si el post tiene asignada una categoría de las que nos interesan y si es así que añada el texto que queremos al inicio del título y que devuelva esa cadena.

Para el ejemplo de la categoría «en venta» quedaría así:

if( in_category( 'en venta') ) {
   $title = 'EN VENTA: ' . $title;
}

Se entiende bien ¿verdad?

Ahora bien, tendríamos que hacer un «if» como el anterior para cada categoría. Por supuesto hay maneras mejores de hacerlo como por ejemplo con un Switch pero bueno, en este tutorial lo hacemos con varios «if» para que se entienda mejor.

Como digo, para el caso de la categoría «vendido«, el if quedaría así:

if( in_category( 'vendido') ) {
     $title = 'VENDIDO: ' . $title;
}

¿Lo tenemos claro? Pues sigamos…

La función

Ahora que ya hemos visto y entendido el funcionamiento básico, vamos a crear la función que contendrá los «if» y que devolverá el título modificado.

La función la vamos a llamar: «modificar_titulo_por_categoria» y quedaría así:

function modificar_titulo_por_categoria( $title, $id ) {

     if( in_category( 'en venta') ) {
          $title = 'EN VENTA: ' . $title;
     }
     
     if( in_category( 'vendido') ) {
          $title = 'VENDIDO: ' . $title;
     }

     return $title;
}

El código completo

Ya casi lo tenemos, lo único que nos falta es añadir un filter que ejecute la función que acabamos de crear.

Usaremos el filtro ‘the_title‘, como no.

Bien, pues para no demorarnos más, aquí tenéis el código completo con esas dos categorías de ejemplo que hemos comentado.

https://gist.github.com/OscarAbadFolgueira/a235b1bc6e48768b5e29fc8f2472c47f

Ya sabes, lo puedes copiar y pegar en el fichero functions.php de tu tema WordPress y modificarlo a tu gusto.

Y aquí podéis ver el resultado:

¿Quieres un plugin?

Para terminar te comento que si necesitas un plugin que haga algo similar a lo que hemos comentado en este artículo, no dudes en comentármelo a través del formulario de contacto. Explícame bien lo que necesitas para que yo lo tenga claro, ok?

Venga, pues sin más, nos vemos en el siguiente!!

Deja un comentario