dic112013
/Creating_Tables_with_Plugins
/Class_Reference/wpdb
.....................
Trucos para controlar WordPress con SQL
WordPress almacena todos los datos en un único sitio, la base de datos de WordPress. Si no sabes lo que es, ya hemos hablado anteriormente sobre su importancia y cómo monitorizarla. Incluso hicimos una petición a los desarrolladores de plugins para que no modifiquen las tablas de la base de datos.
Habitualmente, WordPress usa un sistema gestor de base de datos llamado MySQL(quizás esto te suene), donde define una serie de tablas estándar para guardar los datos de entradas, comentarios, usuarios y demás. Si quieres una descripción detallada de estas tablas, puedes ir al Codex y ahí encontrarás todo lo que necesites.
La mayoría de bases de datos relacionales, como MySQL, soportan un lenguaje específico(también estándar) para realizar consultas a los datos e incluso modificarlos. Este lenguaje se llama SQL y es bastante fácil de entender.
En esta entrada os voy a explicar algunos trucos que he ido recopilando de varios sitios, incluyendo la experiencia propia realizando migraciones de otras plataformas (Drupal, Joomla! y demás) a WordPress.
Cómo acceder a la base de datos
Pero antes de ir a los trucos, veamos cómo podemos acceder a nuestra base de datos y poder aplicar las sentencias SQL que vas a ver a continuación.
La forma más habitual, si utilizas un alojamiento web típico, es que el proveedor te de acceso a un panel de administración. Comúnmente se trata de cPanel, aunque existen otros muchas variantes similares.
Una vez dentro de cPanel, encontrarás un lugar donde aparece el icono de phpMyAdmin, el administrador de bases de datos MySQL que vamos a utilizar. Puedes verlo en la siguiente captura:
Tan solo has de hacer clic en phpMyAdmin y se abrirá el administrador. En el panel de la izquierda deberías ver un listado con las bases de datos disponibles (si es que hay más de una) y tendrás que seleccionar aquella que estés usando para WordPress.
Si no sabes cuál es, lo mejor que puedes hacer es consultarlo con tu proveedor de hosting, o bien mirarlo en el archivo
wp-config.php
del que os hablamos hace unos días.
Una vez seleccionada la base de datos, en el panel de la izquierda vemos las tablas queWordPress crea durante la instalación. Sólo nos queda hacer clic en la pestaña SQL para abrir el editor que nos permitirá escribir las sentencias y ejecutarlas. Puedes ver a lo que me refiero en la siguiente captura:
Ten en cuenta lo siguiente antes de continuar leyendo:
- En todas las sentencias SQL que te voy a enseñar usamos el prefijo
wp_
para las tablas WordPress (wp_posts
,wp_users
,wp_comments
). Puede ser que en tu caso tu proveedor de alojamiento use un prefijo diferente (otro_pref_posts
,otro_pref_users
,otro_pref_comments
). Si esto es así, tan solo sustituyewp_
por el valor que tu tengas en los nombres de tus tablas y listo. - Ejecutar sentencias SQL a lo loco puede ser peligroso. Haz una copia de seguridad de tu base de datos antes de hacer nada. Si la lías y corrompes tus datos, agradecerás poder recuperarlos.
Desactivar todos los plugins
Uno de los trucos más útiles es el de poder desactivar todos los plugins de una vez. Sí, ya se que lo puedes hacer desde el panel de Administrador de WordPress, seleccionándolos todos y desactivándolos. No obstante, si por lo que sea no puedes entrar a este panel (has instalado un plugin que lo ha roto todo, por ejemplo), con la siguiente sentencia los podrás desactivar todos usando SQL:
UPDATE wp_options SET option_value = '' WHERE option_name = 'active_plugins';
Modificar contenidos
Veamos ahora unos trucos sencillos para modificar todos los contenidos de entradas o cualquier tipo personalizado del tirón, sin tener que ir uno a uno.
Cambiar palabras o enlaces
Si quieres cambiar una palabra o una URL de todas tus entradas y páginas, tan sólo has de usar la siguiente sentencia SQL.
UPDATE wp_posts SET post_content = replace(post_content, 'güorpré', 'WordPress');
En este caso lo que hacemos es cambiar toda aparición de la palabra «guorpré» por la palabra (ahora sí, bien escrita) «WordPress». Puedes modificar esto para cambiar los contenidos que quieras. Es especialmente útil para URLs si, por ejemplo, cambias de nombre de dominio.
Si el cambio sólo lo quieres hacer en páginas pero no en entradas, es tan fácil como añadir una siguiente condición a tu sentencia SQL. Puedes cambiar
'page'
por 'post'
o por cualquier otro tipo personalizado que tengas definido en tu WordPress:UPDATE wp_posts SET post_content = replace(post_content, 'güorpré', 'WordPress') WHERE post_type = 'page';
Eliminar Shortcodes
Si tenías shortcodes básicos en tu contenido que ya no se usan, del mismo modo que cambiábamos palabras, puedes eliminar estos siguiendo la misma idea:
UPDATE wp_posts SET post_content = replace(post_content, '[hola]', '');
El problema surge cuando el shortcode no es tan simple como
[hola]
, sino que incluye atributos o texto, como por ejemplo en [hola nombre='Toni']Que tal estás?[/hola]
. Para casos más complejos como este tendrás que usar una función cómo REGEXP_REPLACE
, la cual puedes instalar en tu servidor (si tienes el control de éste) y que puedes obtener desde este proyecto de GitHub. Aunque tengo que reconocer que hacer esto es algo ya más completo… yo lo recomiendo sólo a WProfesionales con experiencia Limpiar Spam
Veamos ahora algunos trucos para deshacernos del contenido no deseado.
Borrar comentarios marcados como spam
Si tienes un montón de comentarios que has marcado como spam pero no has ido borrando, no te preocupes. Con la siguiente instrucción los eliminarás completamente de tu base de datos:
DELETE FROM wp_comments WHERE comment_approved = 'spam';
Borrar comentarios no aprobados
Del mismo modo, podemos eliminar todos aquellos comentarios que no estén aprobados:
DELETE FROM wp_comments WHERE comment_approved = '0';
Borrar comentarios que contengan una URL específica
Seguro que a veces te han llegado comentarios que son spam porque contienen cierta dirección URL, o porque el autor indica que la URL de su web es la URL de una página de spam. Para el primer caso, podemos usar una sentencia que busque todos los comentarios que incluyan la URL
spam.com
(cámbialo por lo que quieras) y los borre:DELETE FROM wp_comments WHERE comment_content LIKE "%spam.com%";
Para el segundo caso, tenemos esta otra instrucción que funciona de forma muy parecida:
DELETE FROM wp_comments WHERE comment_author_url LIKE "%spam.com%";
Eliminar los pingbacks y trackbacks
Cuando alguien enlaza desde WordPress tus contenidos, aparecerá un pingback o trackbackcomo si de un comentario adicional se tratase. Esto es algo que tampoco tiene demasiado interés y, de hecho, yo prefiero no mostrarlos.
DELETE FROM wp_comments WHERE comment_type='trackback' OR comment_type='pingback';
Para ello, con la anterior sentencia nos cargamos todos los pingbacks y trackbacks de WordPress.
Cerrar los comentarios y pingbacks
Otra opción más radical aún es la de hacer que todas las entradas no permitan incluir comentarios. Para no tener que ir una a una, con la siguiente instrucción puedes cerrar los comentarios de todo de una vez:
UPDATE wp_posts SET ping_status = 'closed', comment_status = 'closed';
Y si sólo quieres cerrar los comentarios para un tipo específico, has de añadir la condición (
WHERE
) que ya habíamos visto anteriormente con el tipo concreto que te interese (en este caso, por ejemplo, 'post'
):UPDATE wp_posts SET ping_status = 'closed', comment_status = 'closed' WHERE post_type = 'post';
Añadir un campo personalizado a tus entradas
Esto es un poquito más complejo, pero de gran utilidad. Imagina que a partir de ahora quieres guardar en un campo personalizado el número de visitas de las entradas. Para ello necesitas crear el campo visitas con un valor inicial de cero. La siguiente instrucción te indica cómo hacerlo:
INSERT INTO wp_postmeta (post_id, meta_key, meta_value) SELECT p.ID AS post_id, 'visitas' AS meta_key, '0' AS meta_value FROM wp_posts p WHERE ID NOT IN (SELECT pm.post_id FROM wp_postmeta pm WHERE pm.meta_key = 'visitas' AND p.post_type = 'post');
Hay que hacer una inserción en la tabla
wp_postmeta
con los valores extraídos de la tablawp_posts
donde se guardan las entradas (post_type = 'post'
).Actualizar la contraseña de un usuario
Esto es muy sencillo y, de hecho, ya lo discutimos en una entrada anterior. Sólo has de usar la siguiente instrucción indicando cuál es la nueva contraseña y cuál es el nombre de usuario del usuario que quieras modificar:
UPDATE wp_users SET user_pass = MD5( 'nueva-contraseña' ) WHERE user_login = 'mi-usuario';
Cambiar el autor de tus entradas
Si has creado un nuevo usuario y quieres asignarle las entradas de otro usuario que ya no vas a utilizar, sólo necesitas saber cuales son los identificadores de estos usuarios (cada usuario se identifica con un número único, que encontrarás en la tabla
wp_users
).
Con esta información puedes rellenar la siguiente instrucción SQL y traspasar las entradas del usuario viejo al usuario nuevo.
UPDATE wp_posts SET post_author = 'id-autor-nuevo' WHERE post_author = 'id-autor-viejo';
Cambiar el nombre de usuario
Esto es algo que ya os explicamos recientemente en este artículo. Una de las formas que vimos para hacerlo era, evidentemente, usando SQL:
UPDATE wp_users SET user_login = 'nuevo-nombre', user_nicename = 'nuevo-nombre' WHERE user_login = 'viejo-nombre';
Sólo hemos de cambiar
viejo-nombre
por el nombre del usuario al que queremos cambiarle el nombre, y en nuevo-nombre
poner el nuevo nombre de usuario que hayamos elegido.Obtener un listado con toda la gente que puso un comentario
Esto es muy útil si quieres hacer una campaña a través de email para promocionarte. Seguramente todo aquel que puso un comentario en tu web y dejó su correo puede estar interesado. Esta consulta te devolverá una lista con todos los correos de estos usuarios comentadores, que podrás copiar y pegar en tu sistema de gestión de campañas de correo:
SELECT DISTINCT comment_author_email FROM wp_comments;
Reducir el tamaño de la base de datos
Os hemos hablado ya anteriormente de lo importante que es el mantenimiento de tu web WordPress. Y la base de datos es uno de los puntos centrales. Veamos una serie de trucos para limpiarla de basura inútil.
Eliminar Transients
Los transients son información temporal que se guarda en la tabla
wp_options
y se va borrando sola. No obstante, si algo falla es posible que tengamos esta tabla llena detransients que no sirven para nada. Si los queremos borrar tan solo hemos de ejecutar la siguiente instrucción SQL:DELETE FROM wp_options WHERE option_name LIKE "%\_transient\_%";
Eliminar etiquetas que no usemos
Muchas veces nos volvemos locos creando etiquetas, pero resulta que no las añadimos en ninguna entrada, por lo que no nos sirven para nada. Para evitarlo, podemos ejecutar esta instrucción, que las elimina si no se usan:
DELETE FROM wp_terms t INNER JOIN wp_term_taxonomy tt ON t.term_id = tt.term_id WHERE tt.taxonomy = 'post_tag' AND tt.count = 0;
Eliminar revisiones y datos asociados
Vimos en el artículo donde os hablé del archivo
wp-config.php
que las revisiones son versiones anteriores de nuestras entradas que se guardan en la base de datos a medida que vamos escribiendo esas entradas. También vimos la manera de desactivarlas. Pues ahora vamos a ver la instrucción SQL que nos permite borrar las revisiones de la base de datos y todo aquello asociado a estas (básicamente enlaces con etiquetas o categorías).DELETE a,b,c FROM wp_posts a LEFT JOIN wp_term_relationships b ON (a.ID = b.object_id) LEFT JOIN wp_postmeta c ON (a.ID = c.post_id) WHERE a.post_type = 'revision';
Tan solo cópiala y ejecútala en tu editor SQL de phpMyAdmin para borrar todas las revisiones de tu base de datos.
Borrar entradas antiguas
Y, por último, algo también bastante radical, pero que puede ser útil si nos quedamos sin espacio y no hay otra alternativa posible (lo sé, es un caso extremo…):
DELETE FROM wp_posts WHERE post_date < '1990-01-01 00:00:00' AND post_status = 'publish'
Con la instrucción anterior podemos borrar todas las entradas más viejas que una cierta fecha (en el ejemplo, el 1 de enero de 1990).
Resumen Final
En este artículo, hemos visto diferentes trucos SQL para poder ser más productivos y realizar tareas pesadas de forma casi instantánea. Puedes probarlas y ver si así consiguesadelgazar tu base de datos o realizar cambios rápidamente.
Si tienes problemas, no dudes en contactarnos mediante la sección de comentarios, y si tienes más trucos guardados, compártelos con nosotros. Estaremos encantados de recibir tus sugerencias.
fuente: http://wprincipiante.es/trucos-controlar-wordpress-sql/
No hay comentarios.:
Publicar un comentario