El trabajo de una semana en una mañana con la API de WordPress y Python

El tiempo y esfuerzo que puedes ahorrarte cuando empleas tu esfuerzo en automatizar trabajos repetitivos no tiene precio. Esta es la moraleja que me repito como un mantra cada vez que me enfrento a una tarea repetitiva y tediosa. Por supuesto que dedicar tiempo a crear un script que lo haga por ti tambien tiene un cierto grado de complejidad y riesgo, porque debemos definir una lógica para resolver el problema y luego desarrollarlo, pero con herramientas como GPT eso se ha vuelto mucho más fácil, y merece la pena el intento, todo el código que verás aquí lo ha proporcionado GPT 3.5.

En este caso de uso me enfrenté al desafío de gestionar un vasto directorio de universidades en un nuevo sitio web, con cientos de instituciones que listar, describir y categorizar. En un proyecto anterior lo hice manualmente y sabia que me iba a llevar al menos una semana tenerlo. Esta vez me hice caso y decidí automatizar. Aquí es donde la magia de la API de WordPress y Python entró en juego, transformando lo que podría haber sido un proceso tedioso en una tarea eficiente y sin complicaciones, y lo mejor de todo, me llevó solo una mañana. Te cuento como.

El Desafío

Imagina tener que crear, uno por uno, los posts para cada universidad, asegurándote de que cada uno esté correctamente etiquetado según su ubicación geográfica, si es pública o privada, y si ofrece programas en línea. Ahora, añade la complejidad de trabajar con datos provenientes de múltiples hojas de Excel, cada una con su propia estructura y formato. La tarea parecía interminable y propensa a errores humanos. Necesitaba una solución que no solo fuera rápida, sino también precisa y escalable.

La Solución

La solución fue brillante en su simplicidad: utilizar Python para automatizar la creación de posts en WordPress a través de su API REST. Este enfoque no solo ahorró una cantidad considerable de tiempo, sino que también garantizó que los datos se transfirieran de manera precisa y coherente.

Paso 1: Preparación de los Datos

El primer paso fue consolidar los datos de múltiples hojas de Excel en un formato unificado. Cada universidad se describió en términos de su nombre, distrito, y clasificaciones (pública, privada, en línea). Este proceso de limpieza y normalización de datos fue crucial para garantizar que la información estuviera lista para ser importada sin problemas a WordPress.

Por ejemplo, existía una hoja en el documento que clasificaba a las universidades por su ubicación, que además no estaba estructurada en columnas sino en filas de la siguiente manera:

clasificación de universidades por su ubicacion.

La propuesta de GPT para este caso fue tomar las ubicaciones como mayúsculas y las universidades por descarte de esta manera:

# Procesar la hoja 'geolocalizacion'
df_geolocalizacion = pd.read_excel(xls, 'geolocalizacion', header=None)
distrito = None
for i, row in df_geolocalizacion.iterrows():
    if pd.isna(row[0]):
        continue
    if row[0].isupper():
        distrito = row[0]
    else:
        df_universidades.loc[df_universidades['universidad'] == row[0], 'distrito'] = distrito

Luego se procesaron de manera más sencilla las demás hojas del documento original, con algunas correcciones necesarias como quitar los acentos para evitar errores, ignorar los campos vacios o poner todo en minúsculas, preferencias que yo tengo para crear las taxonomías pero el caso es que puedes «limpiar» y «normalizar» los datos a tu criterio.

Finalmente definimos una estructura de Data Frame que me permitiría tener los datos ordenados en columnas y filas de la siguiente manera:

Datos ordenados en un nuevo Data Frame

De este modo cada universidad sería un H1 del post y las siguientes columnas la asignación de etiquetas que necesitaba para posteriormente filtrar la información en el frontend.

Paso 2: Uso de la API de WordPress

Con los datos listos, creamos un script en Python que interactúa con la API de WordPress. Esta API nos permitió programáticamente crear nuevos posts y asignarles etiquetas. Las etiquetas eran particularmente importantes ya que ayudaban a clasificar las universidades de manera que los usuarios pudieran filtrarlas fácilmente según sus necesidades.

Para esto lo primero es crear permisos de aplicación en el administrador de WordPress para que tu script pueda acceder y crear los posteos, caso contrario recibes un mensaje de error de permisos denegados. Estos permisos deben ser creados en el admin: Usuario/Perfil/Constraseñas de aplicación:

crear contraseña de aplicación en WordPress

Luego en el script defines este acceso de la siguiente manera:

# Configuración
wordpress_url = 'https://www.tusitioweb.com/'
username = 'tu-usuario' (con permisos de administrador)
password = 'Tu pass'
excel_file = 'tuarchivo.xlsx'  # Reemplaza con la ruta a tu archivo de Excel

Paso 3: Automatización de la Creación de Posts

El script de Python lee los datos de nuestro archivo Excel y, para cada universidad, crea un nuevo post en WordPress. Además, verifica si las etiquetas correspondientes ya existen en WordPress y las crea si no era así. Esto asegura que cada post esté correctamente categorizado sin duplicar etiquetas.

Literalmente 5 minutos después de ejecutarlo:

posteos creados con la API de WordPress y Python

Beneficios Obtenidos

La automatización de este proceso trajo consigo una serie de beneficios significativos:

  • Ahorro de Tiempo y Esfuerzo: Lo que podría haber llevado semanas de trabajo manual se completó en cuestión de horas. Este ahorro de tiempo permitió a nuestro equipo enfocarse en otras tareas importantes, como mejorar la experiencia del usuario en el sitio web.
  • Precisión y Consistencia: Al automatizar el proceso, eliminamos la posibilidad de errores humanos. Cada post se creó con precisión, asegurando que los datos de las universidades fueran exactos y consistentes en todo el sitio.
  • Escalabilidad: La solución es altamente escalable. Si necesitamos agregar más universidades en el futuro, solo necesitamos actualizar el archivo Excel y ejecutar el script nuevamente. Esta capacidad de escalar sin esfuerzo es invaluable a medida que nuestra base de datos de universidades crece.
  • Facilidad de Gestión: Al utilizar etiquetas para clasificar las universidades, facilitamos la gestión del contenido en WordPress. Los usuarios pueden filtrar fácilmente las universidades según sus preferencias, mejorando significativamente la experiencia del usuario.
  • Reducción de Costos: Automatizar procesos reduce costos operativos al minimizar la necesidad de intervención manual. Esto es especialmente relevante para organizaciones con recursos limitados.

Este proyecto destacó la poderosa sinergia entre la API de WordPress y Python. La capacidad de automatizar tareas repetitivas y propensas a errores no solo mejoró nuestra eficiencia operativa, sino que también aseguró que la información en nuestro sitio web fuera precisa y fácil de navegar. Para cualquier organización que gestione grandes volúmenes de contenido, adoptar soluciones automatizadas como esta no es solo una opción inteligente, sino esencial para mantenerse competitiva en el panorama digital actual.

Acá les dejo el repo con el código completo de este proyecto. Se aceptan mejoras en su lógica e implementación: Repo Github =)

Salud!

Deja un comentario

Scroll al inicio