Presupuestando proyectos complejos basados en WordPress: WPInfoScan

Desde su lanzamiento en 2003, cuando WordPress se presentó principalmente como una plataforma para blogs, esta herramienta ha evolucionado de manera notable, convirtiéndose en un sistema de gestión de contenido (CMS) robusto y versátil. Uno de los factores clave en su crecimiento ha sido su naturaleza Open Source, que permite a cualquier persona acceder al código, validarlo y contribuir a su desarrollo. Esta apertura ha fomentado una comunidad activa de desarrolladores y usuarios que constantemente mejoran la plataforma mediante Plugins y Themes, creando un ecosistema dinámico que ha permitido a WordPress adaptarse y crecer hasta convertirse en una opción preferida para proyectos de cualquier envergadura.

Presupuestar un nuevo proyecto basado en WordPress

Recientemente, un cliente nos contactó solicitando un presupuesto para un proyecto enfocado en ofrecer formaciones online y una tienda e-commerce. Afortunadamente, el cliente había realizado un trabajo previo exhaustivo y nos proporcionó, no solo una descripción detallada de sus necesidades, sino también varias URLs de sitios web de referencia que ilustraban exactamente lo que quería lograr y cómo operaba su competencia. En su descripción, mencionaba WordPress en dos ocasiones, lo cual nos sorprendió, ya que el sector en el que opera está relacionado con la salud, un ámbito crítico donde no imaginábamos que WordPress pudiera estar siendo utilizado.

Pero, ¿Qué soluciones estaban implementando realmente todas esas empresas?

Para responder a esta pregunta de manera eficiente, inicialmente decidimos aprovechar la información proporcionada y utilizar simplemente el navegador para investigar qué tipo de aplicaciones estaban corriendo en cada dominio web. Con un simple clic derecho en la página, seleccionando «ver código fuente», comenzamos a buscar pistas sobre el software que utilizaban. Para nuestra sorpresa, tras revisar cinco de las 14 referencias (dominios) facilitadas, descubrimos que tres de ellas usaban WordPress, una Shopify y otra Moodle.

Utilizando Python para analizar referencias del sector con simples técncias de web scrapping

Dado que conocemos bien la estructura de directorios de una instalación de WordPress, pensamos que en lugar de visitar manualmente cada una de las URLs—unas 40 en total, distribuidas entre 14 dominios—sería más práctico automatizar el proceso y determinar cuántos de estos sitios realmente utilizaban WordPress. Todo lo que necesitábamos era buscar ciertas ocurrencias en el código fuente de cada página (web scraping) y Python resultó ser la herramienta ideal para este objetivo.

Aunque está lleno de herramientas Python que «scrapean» sitios web basados en WordPress, preferimos escribir nuestra propia utilidad (WPInfoScan), ya que lo que necesitábamos era realmente simple:

  1. Encontrar la existencia de wp-content en el código «debería» estar indicando que se trata de una instalación WordPress.
  2. Si existe wp-content, entonces se pueden buscar todas las apariciones de wp-content/plugins/* para determinar que Plugins utiliza la instalación escaneada y wp-content/themes/* para determinar que Themes se están usando.
  3. Tener tanto la opción de ver los resultados por terminal a medida que se van obteniendo y poder guardarlos en un archivo para poder analizarlos posteriormente.

Primero construimos un json (conf.json) con todos los hosts y sus respectivas urls, basándonos en el documento que el cliente nos facilitó. En esencia era una lista de URLs para cada uno de los dominios. Por supuesto en el ejemplo se omiten los hosts reales o información que revele datos innecesarios, es solo un ejemplo de como debes implementar la utilidad si decides probarla.

{
    "hosts": [
        {
            "domain": "wordpress.org",
            "paths": ["plugins", "themes", "blocks"]
        },
        {
            "domain": "wordpress.com",
            "paths": ["plugins"]
        }
    ]
}

Ahora ejecutamos la utilidad escrita en Python (WPInfoScan) para automatizar la lectura de cada una de las urls y guardar un data.json con todo lo encontrado.

Principales modos de ejecución

1. Ejecutar en modo <default> para un nombre de dominio y una lista de urls (slugs) separados por comas.

python3 wp-info-scan.py -c default -d wordpress.org -u plugins

2. Ejecutar en modo <custom> leerá el archivo que le pasemos mediante -f <archivo>, sin detenerse ante errores y guardando los resultados en formato json en un archivo con nombre data.json. Te permite mantener otros archivos de configuración.

python3 wp-info-scan.py -c custom -f conf.json -e force -o json 

3. Ejecutar en modo <stats> leerá el archivo -f data.json que se haya guardado y mostrará algunas cifras estadísticas básicas.

python3 wp-info-scan.py -c stats

4. Obtener ayuda de WP-Info-Scan para otras opciones de uso

python3 wp-info-scan.py -h

En este punto supimos que de los 14 dominios analizados, nueve utilizaban WordPress, tres utilizaban Shopify, uno Moodle, y otro una aplicación que no pudimos determinar.

JSON de Plugins y Themes únicos:

{"plugins": ["elementor", "skyboot-custom-icons-for-elementor", "cookie-law-info", "sticky-buttons", "woocommerce", "woocommerce-subscriptions", "jet-engine", "advanced-responsive-video-embedder", "sfwd-lms", "header-footer-elementor", "elementor-pro", "ht-mega-for-elementor", "essential-addons-for-elementor-lite", "pixelyoursite", "perfmatters", "premium-addons-for-elementor", "duracelltomi-google-tag-manager", "wpfront-scroll-top", "make-column-clickable-elementor", "wpforms-lite", "jet-menu", "memberpress", "activecampaign-subscription-forms", "design-upgrade-learndash", "search-filter", "tabs-responsive", "gamipress", "if-menu", "ultimate-addons-for-elementor", "video-conferencing-with-zoom-api", "learndash-course-grid", "a3-lazy-load", "woocommerce-payments", "litespeed-cache", "gdpr-cookie-compliance", "jet-popup", "jet-reviews", "jet-elements", "jet-tabs", "jet-tricks", "profile-builder", "wp-rocket", "google-calendar-events", "yith-woocommerce-points-and-rewards-premium", "bbpress", "contact-form-7", "scroll-top", "woocommerce-deposits", "ecommerce-product-carousel-slider-for-elementor", "forget-about-shortcode-buttons", "slide-anything", "download-monitor", "google-analytics-for-wordpress", "photo-gallery", "ultimate-member", "instagram-feed", "click-to-chat-for-whatsapp", "sensei-lms", "wpcf7-redirect", "honeypot", "mailchimp-for-woocommerce", "user-registration", "dynamic-visibility-for-elementor", "woocommerce-memberships", "woo-advanced-discounts", "woocommerce-follow-up-emails", "woocommerce-gift-cards", "ld-content-cloner", "woo-mailerlite", "ooohboi-steroids-for-elementor", "favorites", "jet-search", "woocommerce-gateway-stripe"], "themes": ["hello-elementor", "astra", "astra-child", "bridge", "hello-theme-child-master"]}

NOTA: En algunas arquitecturas WordPress, algunos plugins se pueden cargar mediante Javascript, dicho Javascript con frecuencia interactúa con cookies, pero como las lecturas que hacemos desde nuestro script Python no envían dichas cookies, lo más probable es que estos Plugins no se carguen, por lo que no los veremos en los resultados. Si este es tu caso y quieres poder capturarlos deberás modificar el script para añadir dichas cookies o recurrir a un modo más avanzado de scraping, por ejemplo usando Selenium y Python.

Organizando la información recabada

Con estos resultados iniciales, confirmamos que nuestro presupuesto debía centrarse en la implementación de una arquitectura basada en WordPress. Sin embargo, antes de avanzar, era crucial organizar la información recopilada, es decir, los listados de plugins y temas, y categorizarlos según las secciones y servicios para los que se estaban utilizando.

Para presentar una propuesta clara y fundamentada al cliente, era esencial justificar de manera precisa cómo la competencia estaba utilizando cada uno de estos plugins y con qué propósito. Incorporar un diagrama informativo que reflejara esta estructura resultaba vital.

La opción tradicional habría sido investigar manualmente a través de buscadores para descubrir la función de cada plugin. Sin embargo, se nos ocurrió una alternativa más eficiente: pasar nuestro archivo JSON de datos a ChatGPT y solicitar lo siguiente:

Primero, que organizara todos los plugins de WordPress de nuestro data.json en un diagrama, clasificándolos según los conceptos o funciones para los que estaban siendo utilizados.

Luego, que creara un segundo diagrama, agrupando los plugins conocidos bajo las cabeceras correspondientes a esos conceptos.

NOTA: Si bien, como decíamos, algunos Plugins desconocidos por ChatGPT debimos buscarlos de forma manual, nos fue de gran ayuda a la hora de componer el diagrama que incluiríamos en la propuesta final del proyecto que entregaríamos al cliente. En el diagrama decidimos incluir solo los plugins más usados o conocidos, aunque en el documento final se documentaban todos ellos.

Diagrama programario

Seguridad en WordPress

Aunque el núcleo de WordPress es reconocido por ser bastante robusto y seguro, esta solidez puede verse comprometida si se integran plugins o themes inseguros. La flexibilidad que ofrece WordPress a través de su extensa biblioteca de plugins y themes es, sin duda, una de sus mayores fortalezas. Sin embargo, cada complemento adicional abre una nueva puerta en la arquitectura del sitio, y si alguno de estos elementos presenta vulnerabilidades, toda la seguridad del sitio puede verse afectada. Esto subraya la importancia de no confiar ciegamente en la seguridad del core de WordPress sin considerar los riesgos asociados con las extensiones que se instalan.

Por ello, es fundamental realizar una búsqueda exhaustiva sobre los problemas de seguridad conocidos en los plugins y themes que se planea utilizar. Esto incluye revisar las actualizaciones recientes, leer las opiniones de otros usuarios, y consultar bases de datos de vulnerabilidades específicas de WordPress. Incorporar herramientas de monitoreo y actualización automática también puede ser clave para mitigar riesgos. La seguridad debe ser una prioridad en cualquier proyecto basado en WordPress, especialmente en aquellos de mayor envergadura y complejidad, donde una brecha de seguridad podría tener consecuencias significativas.

Con esto en mente, identificamos que dos de los plugins más utilizados para la formación online, y sorprendentemente populares entre la competencia (cuyos nombres preferimos no mencionar), presentaban problemas de seguridad recurrentes. Debido a la gravedad de estas vulnerabilidades, optamos por descartarlos en nuestra propuesta o, en su defecto, darles una prioridad menor, siempre informando al cliente sobre los riesgos asociados y las posibles alternativas más seguras. La seguridad no es un aspecto que pueda pasarse por alto, especialmente cuando se trata de proteger la integridad y los datos sensibles de los usuarios.

Calculadora, precios y notas finales

Con la información ya organizada, era el momento de sacar la calculadora para determinar el coste total de esta arquitectura de software basada en WordPress. Este paso lo realizamos de manera minuciosa y manual, asegurándonos de que cada precio fuera lo más actualizado.

Al analizar las nueve arquitecturas identificadas, observamos que los costos anuales de las licencias de los plugins variaban significativamente. Las dos soluciones más robustas se situaban entre los 1.400€ y los 1.700€, mientras que las opciones más económicas oscilaban entre los 360€ y los 480€. Estos costos reflejan la realidad del mercado y son cruciales para entender la inversión necesaria (solo en plugins y themes pro) en un proyecto de WordPress de cierta envergadura y complejidad, sin incluir la implementación y configuración de los mismos.

Es vital que cualquier empresa que esté considerando un proyecto en WordPress entienda estos costos desde el principio. Tener claridad sobre estos precios no solo ayuda a evitar sorpresas desagradables más adelante, sino que también permite planificar y ajustar el presupuesto de forma precisa, garantizando que el proyecto sea sostenible a largo plazo.

¿Por qué escogernos para tu Proyecto de WordPress?

En Parkteknia, no solo te ayudamos a organizar y analizar la información crítica de tu sector, sino que también te ofrecemos soluciones a medida que optimizan la implementación de WordPress. Nuestro enfoque va más allá de la simple instalación de plugins o temas: nos aseguramos de que cada elemento en tu sitio esté diseñado y alineado con tus objetivos comerciales y te ayude a destacar en un mercado competitivo.

Estamos aquí para ayudarte a llevar tu proyecto al siguiente nivel, garantizando que cada euro invertido en tu infraestructura de WordPress sea una inversión en el éxito a largo plazo de tu negocio.

This post has 0 likes
Like this Post

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Scroll al inicio