Sustituir Texto en Posts de WordPress
Muchos de los amigos de BdW también lo son del photoblog jggweb.
Un híbrido entre blog y photoblog, que expone muchas fotografías, publican tutoriales y videotutoriales sobre técnicas de retoque digital, reseñas sobre aplicaciones software para los amantes de la fotografía digital, así como artículos sobre técnica fotográfica.
Desde hace algún tiempo los post se publican en español y en inglés, gracias a la inestimable ayuda de Simon.
En la cabecera de una página web, antes del HEAD, debemos especificar el idioma con el que se piensa escribir, de la siguiente forma:
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="es">
A lo largo del documento (en cada uno de los post) si escribimos algo en otro idioma es importante marcarlo para que sea fácilmente identificable durante las futuras indexaciones. Algunos ejemplos podrían ser:
<p>Fue presentado en el festival de cine de San Sebastián.</p>
<p xml:lang="en">It was presented at the Sundance Film Festival.</p>
También podríamos especificar si es inglés británico o americano.
<p xml:lang="en-GB">Where is Paul?</p>
<p xml:lang="en-US">Elvis lives!</p>
Para diferenciar el texto en inglés creé la siguiente clase CSS:
.ingles{
color: #889944; // Color del texto verdoso
padding-top: 8px; // Distancia entre el borde superior y la primera línea
border-top: 1px solid #fff; / Define un borde superior blanco
}
Por lo que para publicar párrafos en inglés usaba el siguiente código:
<div class=”ingles”>It took 2 months to edit and mount the 35 minutes which it lasts.</div>
Ahora tras cientos de artículos publicados en los dos idiomas, pensé que debería añadir la cláusula xml:lang=”en” en cada etiqueta <div class=”ingles”>. Una labor que si la hubiera realizado a mano me habría llevado mucho, mucho tiempo.
Por esto decidí que lo mejor sería ejecutar una consulta SQL que lo realizara con un sólo clic. Para ello accedí al Panel de Control de phpMyAdmin (aunque también podría haber usado el MySQL-Front) y ejecuté la siguiente consulta SQL:
SELECT `post_content`
FROM `wp_posts`
WHERE `post_content` LIKE '%<div class="ingles">%';
Esta consulta devuelve los contenidos de los artículos que contienen la etiqueta <div class=”ingles”>.
Después, con una consulta de actualización, sustituimos todas las etiquetas <div class=”ingles”> por <div xml:lang=”en” class=”ingles”>.
UPDATE `wp_posts`
SET `post_content`=REPLACE( `post_content` , '<div class="ingles">', '<div xml:lang="en" class="ingles">' )
WHERE `post_content` LIKE '%<div class="ingles">%'
La función REPLACE sustituye el texto definido por el segundo parámetro con el texto del tercer parámetro en el campo definido por el primer parámetro, es decir sustituye todas las etiquetas <div class=”ingles”> por <div xml:lang=”en” class=”ingles”> en el campo post_content de la tabla wp_posts.
Espero que os resulte útil.
