Qué consulta SQL usar para hacer un simple buscar y reemplazar
Cada vez que creo un nuevo sitio web, primero creo un sitio de staging en un subdominio como "stage.domain-name.com".
Después de que todo funciona correctamente, exporto la base de datos, la abro en notepad++ y hago un buscar/reemplazar de "subdomain.domain-name.com" y lo reemplazo por "domain-name.com"... finalmente la importo en una nueva base de datos para el sitio en producción.
Mi pregunta es... ¿qué consulta SQL necesitaría ejecutar si solo quisiera hacer este simple buscar/reemplazar en toda la base de datos usando phpMyAdmin?
-CH

Mejores opciones para hacerlo en opciones, publicaciones, contenido de publicaciones y metadatos:
UPDATE wp_options SET option_value = replace(option_value, 'http://olddomain.com', 'http://newdomain.com') WHERE option_name = 'home' OR option_name = 'siteurl';
UPDATE wp_posts SET guid = replace(guid, 'http://olddomain.com','http://newdomain.com');
UPDATE wp_posts SET post_content = replace(post_content, 'http://olddomain.com', 'http://newdomain.com');
UPDATE wp_postmeta SET meta_value = replace(meta_value, 'http://olddomain.com', 'http://newdomain.com');
También puedes consultar Búsqueda de datos usando phpMyAdmin y MySQL | Packt Publishing. Y Search RegEx es un buen plugin de WP para buscar y reemplazar con Grep en todas las publicaciones y páginas.
Actualización 16/06/2015: Usar la herramienta enlazada en la siguiente oración es mucho mejor, ya que un simple buscar/reemplazar como el anterior en un volcado de base de datos romperá los datos serializados. Revisa interconnectit.com WordPress Serialized PHP Search Replace Tool. De esta manera, no romperás los datos serializados y no necesitarás ejecutar RegEx en el contenido de las publicaciones, ya que el script de interconnect cambia las URLs en todas partes. Yo uso esa herramienta todo el tiempo para migrar sitios a diferentes dominios, o simplemente para hacer un cambio global de http a https y forzar SSL sin plugins y cambiar todas las URLs en el contenido para evitar errores de elementos inseguros.
Edición 02/09/21 WP CLI también es una gran herramienta, y maneja correctamente los datos serializados. Consulta https://developer.wordpress.org/cli/commands/search-replace/

Nunca cambies el guid - incluso si cambias a un nuevo dominio. Se utiliza para identificar de forma única la publicación, ya que el ID puede cambiar si las publicaciones se exportan/importan a una nueva base de datos. Entre otras cosas, los lectores RSS utilizan el GUID para saber si un artículo específico ha sido leído o no. Cambiar el guid hará que efectivamente se vuelvan a publicar todos tus artículos.

Si estás cambiando de dominio, simplemente no tenés opción y tenés que cambiar los GUIDs. Las consecuencias en los lectores RSS son un precio mínimo a pagar.

A pesar de que los GUID contienen una URL, no se usan para crear enlaces (por ejemplo en menús) cuando se hace referencia a posts. Por lo tanto no cambiarlos es perfectamente aceptable

La tabla donde se guarda tu URL es wp_options. Debes hacer una actualización en las columnas que usan la URL de tu sitio:
UPDATE TABLE wp_options SET option_value = "nuevo dominio" WHERE option_name = "siteurl"
UPDATE TABLE wp_options SET option_value = "nuevo dominio" WHERE option_name = "home"
Podría faltar algún valor, pero cada vez que realices este proceso de buscar/reemplazar nuevamente, podrás notar los valores y tablas que deberían actualizarse y agregarlos a este script.
El Codex de WordPress tiene una buena guía sobre cómo cambiar la URL de un sitio, quizás te sea más útil: Cambiando la URL del sitio

¿No hay una forma de hacer un buscar/reemplazar en toda la base de datos? En otras palabras... noté que necesito reemplazar las URLs en muchos lugares diferentes, incluyendo la biblioteca de medios... Si hubiera un buscar/reemplazar para toda la base de datos que cubriera esencialmente todos los campos, esto resolvería el problema. Gracias por tu ayuda.

Revisa ese nuevo enlace que añadí en la respuesta. Creo que ese sería el camino a seguir.

Este es un excelente script listo para usar que yo utilizo y funciona perfectamente con los arrays serializados que WordPress emplea para almacenar opciones. Solo asegúrate de eliminarlo de tu servidor remoto cuando hayas terminado porque representa un ENORME riesgo de seguridad.
https://interconnectit.com/products/search-and-replace-for-wordpress-databases/

Para esto uso WP-CLI porque lo considero el más fácil y se encarga de los datos serializados.
wp search-replace 'http://example.dev' 'http://example.com' --skip-columns=guid
También existe una opción que escribe tus cambios en un archivo SQL en lugar de manipular directamente la base de datos:
wp search-replace foo bar --export=database.sql

no es necesario hacer esto, puedes usar rutas relativas.
cuando estés enlazando algo en lugar de subdominio.algo.com/imagen.jpg - usa /imagen.jpg por ejemplo
de esta manera no tendrás el problema desde el principio.
de lo contrario, para una sentencia de actualización en mysql puedes usar
update TABLE_NAME set FIELD_NAME = replace(FIELD_NAME, ‘texto a buscar’, ‘texto de reemplazo’);

Gracias... sí, lo haré la próxima vez. ¿La sentencia SQL hace un buscar y reemplazar en toda la base de datos (incluyendo todas las tablas)?

@NetConstructor.com La sentencia SQL que mireille te dio arriba es el comando genérico de MySQL para reemplazar una cadena en un campo específico de una tabla específica. Si intentaste ejecutar esta sentencia exactamente como estaba escrita, no funcionaría. Para que este comando funcione, necesitarías cambiar TABLE_NAME & FIELD_NAME por un campo y tabla reales utilizados por WordPress.

Ten en cuenta también que incluso si deseas usar rutas relativas, muchas partes de WordPress tienden a insertar automáticamente rutas completas. Para que esto funcione realmente, un plugin como: https://wordpress.org/plugins/root-relative-urls/ es muy, muy útil

Para cambiar el dominio de WordPress, algo que necesitamos con frecuencia, puede ser para poner el sitio en producción desde localhost: Esta es una lista completa de consultas de actualización:
UPDATE wp_posts SET guid = replace(guid, 'http://olddomain.com','http://newdomain.com');
UPDATE wp_posts SET post_content = replace(post_content, 'http://olddomain.com', 'http://newdomain.com');
UPDATE wp_links SET link_url = replace(link_url, 'http://olddomain.com', 'http://newdomain.com');
UPDATE wp_links SET link_image = replace(link_image, 'http://olddomain.com', 'http://newdomain.com');
UPDATE wp_postmeta SET meta_value = replace(meta_value, 'http://olddomain.com', 'http://newdomain.com');
UPDATE wp_usermeta SET meta_value = replace(meta_value, 'http://olddomain.com', 'http://newdomain.com');
/*UPDATE wp_options SET option_value = replace(option_value, 'http://olddomain.com', 'http://newdomain.com') WHERE option_name = 'home' OR option_name = 'siteurl' OR option_name = 'widget_text' OR option_name = 'dashboard_widget_options';*/
UPDATE wp_options SET option_value = replace(option_value, 'http://olddomain.com', 'http://newdomain.com');
- También debemos agregar otras tablas que no son predeterminadas en WP si es necesario.
ACTUALIZACIÓN: Search Replace DB versión 3.1.0 es una herramienta intuitiva de interfaz para desarrolladores, que te permite realizar búsquedas y reemplazos en toda la base de datos, sin dañar cadenas u objetos serializados en PHP.

En realidad, no necesitas usar una consulta SQL, solo algunos ajustes en los archivos wp-config.php y functions.php de tu tema. Revisa este tema en el Codex de WordPress: https://codex.wordpress.org/Changing_The_Site_URL
