Autonomía digital y tecnológica

Código e ideas para una internet distribuida

Cómo filtrar las funciones previous_post_link y next_post_link de WordPress usando un custom field

Imago voragine.net
• Por

En WordPress previous_post_link() y next_post_link() permiten enlazar, en la plantilla de una entrada, la anterior y la siguiente entrada respectivamente. Estas entradas vienen definidas por unos parámetros por omisión que definen una petición a la base de datos que hace la función get_adjacent_post(). Estos parámetros definen que el criterio para seleccionar la entrada anterior y posterior sea la fecha de publicación.

Afortunadamente get_adjacent_post() dispone de tres hooks donde añadir filtros para modificar los parámetros de la petición a la base de datos para modificar las entradas previa y siguiente: get_{$adjacent}_post_join, get_{$adjacent}_post_sort y get_{$adjacent}_post_where. $adjacent puede tomar los valores previous y next.

Escribo a continuación el código necesario para cambiar el criterio para obtener la entrada previa y siguiente en base a un campo (custom field) numérico que haya servido para ordenar ascendentemente las entradas en la plantilla de archivo.

Cómo cerrar los comentarios para todas las entradas en WordPress usando wp-cli

Imago voragine.net
• Por

La gestión de los comentarios en un wordpress que ya no está muy activo, que se queda sin moderación, puede llevar un buen rato si no se toman las medidas para prevenir que nuestra base de datos crezca desmesuradamente a causa de los comentarios spam o los que se quedan en espera de ser aprobados, que casi en su totalidad serán spam también.

Hace un tiempo publiqué cómo borrar masivamente comentarios de la base de datos usando wp-cli. Si no se tiene más remedio, es una buena manera de adelgazar la base de datos. Aunque siempre es mejor atajar el problema antes de que se produzca. Para ello se pueden tomar dos medidas: cerrar los comentarios para las nuevas publicaciones y también para todas las que se publicaron en el pasado.

Cómo subir archivos SVG al gestor de medios de WordPress

Imago voragine.net
• Por

Habilitar la subida de archivos SVG al gestor de medios de WordPress es tan fácil como añadir cinco líneas de código al theme o plugin que se esté desarrollando. Sin embargo, verificar que el SVG que se está subiendo es seguro es algo más complicado: hay que analizar el código XML que conforma el archivo SVG en busca de código malicioso que una vez en el servidor podría crear una vulnerabilidad. Por esta razón es una buena idea usar el plugin Safe SVG, desarrollado y mantenido por la empresa 10up, que comprueba los archivos antes de añadirlos al gestor de medios usando la biblioteca SVG-sanitizer. Este plugin además optimiza los archivo SVG usando la biblioteca svgo.

Entorno de desarrollo en local para WordPress con Varying Vagrant Vagrants

Imago voragine.net
[actualizado el ] • Por

Varying Vagrant Vagrants (VVV) es una de las maneras recomendadas por la comunidad que desarrolla WordPress para poner en marcha un servidor de desarrollo en local.

VVV es un entorno de desarrollo para WordPress que usa Vagrant, una herramienta pensada para montar entornos de desarrollo. Vagrant usa máquinas virtuales para ello. Al usar Vagrant se puede elegir el sistema de virtualización. VVV recomienda Virtualbox. Vagrant añade al sistema de virtualización, por ejemplo Virtualbox, una capa que facilita la automatización a la hora de crear y gestionar las máquinas virtuales usadas en el entorno de desarrollo.

VVV viene listo para comenzar inmediatamente el desarrollo, equipado con todo lo necesario en un entorno de desarrollo incluyendo herramientas específicas de WordPress como wp-cli.

Cómo cambiar el nombre de usuario (username) en WordPress usando wp-cli

El nombre de usuario en WordPress está protegido por diseño, de manera que no se puede cambiar desde el panel de administración ni usando las funciones PHP para actualizar los datos de un usuario. La orden wp user update de WP-CLI tampoco permite cambiar el username. Esta protección tiene su lógica, pero hay veces que necesitamos cambiar algún username. Una manera de hacerlo es modificándolo directamente en base de datos.

Con WP-CLI podemos lanzar una query a la base de datos para cambiar el username:

wp db query "UPDATE wp_users u, 
    ( SELECT 
          COUNT(*) as number_of_same_login_users
          FROM wp_users u 
          WHERE user_login = 'mary_new' 
    ) tmp 
    SET u.user_login = 'mary_new' 
    WHERE 
            u.user_login = 'mary_old' 
        AND tmp.number_of_same_login_users = 0"

En una línea:

wp db query "UPDATE wp_users u, ( SELECT COUNT(*) as number_of_same_login_users FROM wp_users WHERE user_login = 'mary_new' ) tmp SET u.user_login = 'mary_new' WHERE u.user_login = 'mary_old' AND tmp.number_of_same_login_users = 0"

Visto en este hilo de wordpress.stackexchange.com.

Borrar masivamente entradas u otros contenidos en WordPress con wp-cli

Recientemente he sufrido ataques en algunas webs gestionadas con WordPress. Una de las consecuencias es que cientos de artículos sobre casinos en línea y juegos de azar son creados. Borrar estos contenidos desde el panel de administración puede llevar un buen rato. Con wp-cli se puede hacer con un comando.

Normalmente estas infecciones crean los contenidos automáticamente y de una vez, así que la fecha es la misma para todos los contenidos. Podemos por tanto obtener un listado de entradas filtrado por fecha y luego borrarlas. Algo así:

wp post delete $(wp post list --year=2022 --month=06 --day=01 --format=ids) --force

Borrar miles de comentarios spam en WordPress con wp-cli

Imago voragine.net
[actualizado el ] • Por
Hay instalaciones de WordPress que se quedan descuidadas durante un tiempo y se llenan de spam. Una de las principales entradas de spam son los formularios para dejar comentarios en cada post. Un WordPress descuidado puede acumular rápidamente decenas de miles de comentarios basura. Borrarlos desde el panel de administración no es una opción. Sí que se puede hacer directamente en base de datos, sin embargo usando wp-cli es mucho más fácil. wp-cli es una herramienta maravillosa. Y cuando se combina con el poder de bash se pueden realizar tareas titánicas con un solo comando, como borrar miles de comentarios clasificados como spam.

Gestionar WordPress desde la línea de comandos con wp-cli

Imago voragine.net
[actualizado el ] • Por

wp-cli es una interfaz de línea de comandos para WordPress. Permite hacer multitud de operaciones de administración y mantenimiento de una instalación de WordPress. Por un lado agiliza estas operaciones y por otro permite automatizarlas, ejecutándolas en modo no interactivo usando cron y un script de bash por ejemplo.

Aquí recojo cómo llevar a cabo tareas básicas con WordPress usando wp-cli. Para cualquier otro uso se puede consultar la documentación oficial de wp-cli.