Macbook medio cerrado con colores brillantes en la pantalla

WordPress es una de las mejores plataformas web sobre las que puedes desarrollar hoy en día. De acuerdo, quizás no use las tecnologías más nuevas ni su arquitectura sea perfecta (no olvidemos que es un proyecto que nació en 2003 como tal y que, por lo tanto, muchas cosas se vienen arrastrando de hace tiempo), pero el proyecto va avanzando a buen ritmo y se va modernizando en cada nueva iteración. Un ejemplo de esta modernización la tenemos en Gutenberg, el nuevo editor de WordPress implementado sobre React.js que promete revolucionar la forma en la que trabajaremos con WordPress.

Bueno, a lo que iba, que me enrollo y pierdo el hilo. Como te decía, WordPress probablemente sea la mejor plataforma sobre la que desarrollar en la web. ¿Por qué? Porque tiene una comunidad extremadamente activa de la que puedes aprender y a la que puedes contribuir y porque es el motor que mueve el 29% de la web. Por lo tanto, apostar por WordPress es apostar a caballo ganador. Nosotros mismos, por ejemplo, apostamos en su día por WordPress… y aquí nos tienes, 4 años después, ganándonos la vida con nuestros plugins y tirando pa’lante.

Guy dancing in front of his computer
¡Qué bonito es cuando consigues tu primer cliente con tu primer plugin en WordPress! Fuente: Giphy.

Una de las dudas que más recibo de desarrolladores que quieren empezar en WordPress es: ¿cómo puedo crear mi primer plugin en WordPress y subirlo a WordPress.org para que cualquiera lo use? La primera parte de la pregunta ya la hemos tratado en el blog anteriormente, cuando te expliqué cómo crear un plugin en WordPress. De hecho, incluso vimos un ejemplo de cómo crear un plugin con personalizaciones para evitar tener que modifiar el functions.php del tema. Así que hoy nos centramos en la segunda parte: cómo subir tu primer plugin a WordPress.org.

Antes de poder subir el plugin…

Antes de poder subir el plugin al directorio de WordPress, digo yo que tendrás que crear uno… aunque imagino que ya lo tienes ? De todas formas, y por si aún tienes dudas de cómo enfocar el proyecto, permíteme que te recuerde algunos de los consejos que hemos dado anteriormente en este blog para crear un plugin en WordPress:

  1. Qué es un MVP y cómo decidir las funcionalidades básicas en WordPress. Cuando vas a empezar un nuevo proyecto es muy importante determinar lo antes posible si va a tener éxito o no; no tiene sentido dedicar muchos recursos a algo que quizás fracase. En esta entrada te explico qué es el producto mínimo viable y cómo puedes usarlo para empezar con tu nuevo plugin.
  2. Guías de estilo de programación para WordPress. WordPress es un proyecto mantenido por la comunidad. En otras palabras, hay muchísima gente que contribuye al proyecto. En esta entrada vemos cuáles son las guías de estilo que deberías seguir a la hora de programar código para esta plataforma, con el objetivo de que aquello que tu crees se adapte a WordPress de una forma natural y elegante.
  3. Cuando la libertad de WordPress se carga tu negocio. Cuando programes plugins para WordPress debes tener siempre presente que no vas a estar sólo y que tu plugin probablemente acabe ejecutándose junto a muchos otros. Por ello, es importante que trabajes de forma limpia y ordenada, para evitar que tu código «moleste» a los plugins de otros desarrolladores (y confiando que esos otros desarrolladores serán igual de limpios y ordenados que tú, para evitar que su código moleste al tuyo ?).
  4. Los 6 secretos para internacionalizar bien tu plugin. Si vas a crear un plugin para WordPress, deberías tener en cuenta que el público objetivo es gente de cualquier rincón del mundo y, por lo tanto, tu plugin debería estar preparado para ser internacionalizado. En esta entrada te explico cómo hacerlo.
  5. Algunas herramientas/plugins que deberías tener en cuenta para programar:

Espero que estos recursos te ayuden a ponerte manos a la obra ? Y ahora, por fin, vamos a suponer que ya tienes tu primer plugin creado y que quieres subirlo a WordPress.org. ¿Cómo se hace eso?

Cómo subir el plugin por primera vez

Para conseguir publicar tu plugin en WordPress.org, lo primero que deberás hacer es enviarlo en formato zip a través del formulario disponible en WordPress.org. Una vez lo reciban, tu plugin pasará por una revisión manual en la que se decidirá si puede añadirse al directorio de plugins de WordPress.org o no. En esta revisión se suelen comprobar cosas básicas como que, por ejemplo, se cumplan las guías de WordPress o que no haya errores garrafales (del tipo «no aplicar el sanitize» en los inputs del usuario).

El proceso de revisión de plugins suele tardar unos días, puesto que el equipo encargado de comprobar la calidad de los plugins recibidos es pequeño. Por lo tanto, te recomiendo que compruebes de antemano que el plugin está bien, o entrarás en un proceso de envío-rechazo-envío-rechazo que puede llegar a cansarte y desanimarte. Así a bote pronto, lo más importante es lo siguiente:

  • Asegúrate de que el plugin tiene un fichero README.txt válido. Este fichero es muy importante, porque su contenido es el que aparece en el directorio de plugins de WordPress. En otras palabras, los diferentes apartados del fichero no pueden ser los que tú quieras, sino que tienen que seguir un «estándar». Por ejemplo, nuestro plugin Nelio Content tiene este README.txt , cuyo resultado es esta página en el directorio de plugins. Puedes usar esta herramienta para validar el formato de tu README.txt.
  • Asegúrate de que todas las clases y funciones tengan un prefijo que las haga únicas. Por ejemplo, no crees una clase llamada Post_Ajax_API para los callbacks de las llamadas AJAX de tu plugin o una función llamada has_subscription para comprobar si el usuario está suscrito a tu servicio o no; añade un prefijo a esos nombres para que el resultado sea del tipo Nelio_Content_Post_Ajax_API y nelio_content_has_subscription. De esta forma, evitamos que otro plugin pueda crear una función o clase con el mismo nombre que nosotros y acabemos generando una colisión de nombres. Alternativamente, podrías usar la funcionalidad de namespaces de PHP.
  • Asegúrate de que todas las cadenas de texto que se impriman por pantalla están correctamente escapadas con las funciones esc_html y esc_attr. De la misma forma, y como te decía antes, asegúrate de aplicar funciones de sanitize a cualquier dato que te haya dado el usuario. Si no lo haces, te arriesgas a crear agujeros de seguridad en tu plugin.
  • Comprueba que todos los recursos JavaScript y CSS que añadas en tu plugin estén en el propio plugin y, por lo tanto, que no se estén añadiendo desde servidores de terceros.
  • Finalmente, ve con cuidado con el nombre que le has dado a tu plugin. Tal y como se indica en la documentación, no puedes llamar a tu plugin de la misma forma que una marca registrada que no sea tuya (y sí, esto incluye la palabra «WordPress«). Si incluyes el nombre de una marca registrada para dar a entender que tu plugin es una extensión de lo que ellos ofrecen, debes hacerlo de tal forma que quede claro que es eso, una extensión, y que tú no tienes nada que ver con la marca. En definitiva, que pongas un nombre que no lleve a confusión al usuario final, porque si fuera el caso te arriesgas a que no lo aprueben o, aún peor, que el día de mañana el propietario de la marca lo denuncie y te lo tumben (con lo que toda la reputación y usuarios que hubieras conseguido se desvanecerían de la noche a la mañana).

Si tienes todo esto controlado, junto con los consejos que te daba en el apartado anterior, casi me atrevería a garantizarte que tu plugin será aceptado ?.

ftw win GIF
¡Felicidades! Plugin aceptado ??

Cómo usar SVN para subir actualizaciones

Una vez tu plugin haya sido aceptado, recibirás un correo electrónico en tu buzón parecido a este:

Your plugin hosting request has been approved.

Within one hour, you will have access to your SVN repository at
https://plugins.svn.wordpress.org/nelio-content/
with your WordPress.org username and password (the same one you use on the forums).

(…)

Enjoy!

Es decir, pronto tendrás un repositorio SVN con el que podrás gestionar el código fuente de tu plugin y las diferentes versiones que vayas sacando. Si nunca has usado SVN y no sabes por dónde empezar, no sufras; es parecido a Git. De hecho, es más sencillo que Git, así que no te va a costar nada pillar como funciona. Vamos a ver los conceptos más básicos que necesitarás conocer (y que están muy bien explicados también en la propia documentación de WordPress).

Configurar el repositorio SVN en local

Cuando por fin te hayan dado acceso al repositorio SVN, lo primero que tendrás que hacer es «clonarlo» en tu ordenador local. Usando la terminología de SVN, lo que vas a hacer es checkout del proyecto que haya en el servidor. Para ello, ejecuta el siguiente comando:

svn checkout https://plugins.svn.wordpress.org/nombre-plugin/

Esto creará la carpeta nombre-plugin con el proyecto clonado. Una forma más breve es cambiar checkout por la abreviatura co:

svn co https://plugins.svn.wordpress.org/nombre-plugin/

Si echas un vistazo al interior de esta carpeta, verás que tiene unos cuantos directorios que probablemente no conozcas. Veamos cuáles son y para qué sirven:

  1. trunk. Este es el directorio en el que vas a meter el código de tu plugin y en donde «trabajas» de forma activa. Se supone que el código que hay aquí está en desarrollo y, por lo tanto, puede contener bugs o cambiar… así que en principio nadie debería usar la versión de desarollo en un entorno de producción, pero ahí está. Lo único importante que debes tener en cuenta es que aquí dentro va directamente el código de tu plugin (ejemplos: trunk/nombre-plugin.php, trunk/lib/lo-que-sea.php); es decir, no crees una carpeta con el nombre del plugin y dentro de esta carpeta los ficheros (ejemplos de lo que no tienes que hacer: trunk/nombre-plugin/nombre-plugin.php, trunk/nombre-plugin/lib/lo-que-sea.php)
  2. assets. En este directorio se incluyen los diferentes ficheros que usa el directorio de WordPress.org para listar tu plugin de forma «bonita». Es decir, el icono de tu plugin, la imagen de cabecera y las capturas de pantalla. De nuevo, en la documentación de WordPress te explican exactamente qué tamaños deben tener los banners, cuántos iconos diferentes (y de qué tamaños) debes generar y cómo nombrar las capturas de pantalla (básicamente, screenshot-x.jpg o screenshot-y.png, donde x e y son un número y sirven para enlazar la imagen con su descripción, la cual encontramos en el fichero README.txt).
  3. tags. En esta carpeta añadiremos las diferentes versiones estables que vayamos publicando. Luego te cuento cómo.
  4. branches. En este último directorio es donde puedes crear las diferentes ramas de desarrollo de tu plugin. Hoy no quiero complicarte mucho la entrada hablando de ramas en SVN, así que no voy a explicar mucho más de esto aquí. Si te interesa el tema, puedes leer la documentación SVN sobre cómo crear ramas y cómo hacer merge entre ellas o con trunk.

Cómo actualizar mi repositorio local con la información que está en el servidor

Si la copia que tienes en local del repositorio ha quedado atrás con respecto lo que hay en el servidor, lo único que tienes que hacer es actualizarte. En Git, esto se hace con el comando pull. En SVN, esto lo consigues con el comando checkout que acabamos de ver. Es decir, te metes dentro del directorio del proyecto y haces lo siguiente:

svn co

¡y listo!

Cómo guardar mis cambios en el servidor

En Git existen dos comandos para guardar los cambios que has realizado en un proyecto: commit y push. El primero lo que hace es registrar un conjunto de cambios y guardarlo en tu proyecto Git local. El segundo sube esos cambios al servidor para que esté disponible para los demás desarrolladores. En SVN es todo mucho más simple: cuando realices un cambio y quieras guardarlo, simplemente usa el comando commit:

svn commit

o su versión corta:

svn ci

y los cambios se guardarán directamente en el servidor (no es necesario hacer push, porque no existe).

Cómo crear una nueva versión estable de mi plugin

Finalmente, ya sólo nos queda el último paso: cómo marcar una versión como estable y publicarla como tal en el directorio de plugins de WordPress.org. Por ejemplo, supón que el código que tengo ahora mismo en trunk debería convertirse en la versión 2.1.0 de mi plugin. Lo único que debo hacer es crear una carpeta con ese mismo nombre en tags y copiar el contenido de trunk dentro de la siguiente forma:

svn copy trunk tags/2.1.0

o su versión corta:

svn cp trunk tags/2.1.0

Con esto ya casi lo tenemos todo listo. Si ahora echaras un vistazo a tags verías que, a lo mejor, además de la versión 2.1.0 que acabamos de crear, hay otras versiones: 1.0.0, 1.0.1, 1.0.2, 1.2.0, etc. ¿Cómo sabe WordPress cuál de ellas es la estable?

Si echas un vistazo al fichero README.txt de trunk verás que hay un atributo en la cabecera llamado Stable tag. Pues bien, lo único que debes hacer es modificar su valor para que «apunte» a la versión que quieras que sea estable. En nuestro caso, lo dejaríamos tal que así:

Stable tag: 2.1.0

y luego ya sí podemos preparar el commit.

Pero a mí me gusta trabajar con Git…

¡A nosotros también! Así que te comento lo que hacemos nosotros. En nuestro caso, el código fuente de nuestros plugins lo gestionamos en un repositorio Git en Bitbucket. Cuando queremos lanzar una nueva versión, copiamos todos los cambios del directorio Git al directorio trunk del proyecto SVN y creamos la nueva etiqueta tal cual te acabo de explicar. De hecho, como era un proceso un poco repetitivo, al final lo que hicimos fue crear un script que automatizara el proceso; echa un vistazo a cómo lo hicimos y aprovecha para automatizar tu trabajo tú también ?

Y ahora, ¿qué?

¡Ahora ya lo tienes todo en marcha! Lo único que te queda es seguir trabajando en tu plugin, ofrecer un fantástico soporte a tus usuarios y ver cómo tu cuota de usuarios va creciendo poco a poco. ¡Ah! Y no olvides contarnos qué tal te va con esta nueva aventura en los comentarios ?

Imagen destacada de Ash Edmonds vía Unsplash.

7 respuestas a «Cómo subir tu plugin al directorio de WordPress»

  1. Avatar de SmartLinkDu

    Hola David
    Entonces el mail que dice «Within one hour, you will have access to your SVN repository at….. » es el último que me envian !!

    Y yo esperando a que me den el acceso, ya lo tenia.!!

    Es mi primer plugin y me lo aprobaron enseguida. en menos de 2 días..

    Me quedaban dudas sobre como manejarme con el SVN, pero ahora si que me quedo bien claro. GRACIAS!

    PD. (Mi plugin se llama SmartLink Dinamic URLs y antes de subirlo a WP ya habia muchas personas interesadas..
    Seria un honor para mi si me das tu feedback)
    Saludos!!

    1. Avatar de David Aguilera

      ¡Felicidades por tu primer plugin! Estaría bien que completaras el README, explicando un poco para qué sirve el plugin y acompañándolo (si procede) de alguna captura de pantalla.

      1. Avatar de Sebas
        Sebas

        Si. Es que habia un error con el readme.txt
        Ya esta solucionado..

  2. Avatar de JuanKa Díaz

    Una vez mas, muy buen artículo! Buena información y muy útil 😉

  3. Avatar de Marcel

    Muchísimas gracias.
    Fue el único blog que explica de forma clara y simple todos los pasos para tener tu propio plugin en el repositorio de WP.
    Como comentario, me descargué el PHPStorm en mi MAC. Este programa conocido por muchos, trae incorporado el subversion y es muy fácil de usar.

    1. Avatar de David Aguilera

      Un placer haberte podido ayudar, Marcel. ¡Suerte con tu aventura en el mundo de los plugins para WordPress!

Deja una respuesta

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

He leído y acepto la política de privacidad de Nelio Software

Tus datos personales se almacenarán en SiteGround y serán usados por Nelio Software con el único objetivo de publicar tu comentario aquí. Con el envío de este comentario, nos das el consentimiento expreso para ello. Escríbenos para acceder, rectificar, limitar o eliminar tus datos personales.