Cómo publicar un plugin aprobado en WordPress.org usando SVN y TortoiseSVN

Si desarrollaste un plugin para WordPress y WordPress.org ya aprobó su publicación, el siguiente paso es subir la primera versión al repositorio oficial.

WordPress.org utiliza SVN (Subversion) como sistema de control de versiones para gestionar el código de los plugins disponibles en su directorio.

Una vez aprobado el plugin, recibirás acceso a un repositorio con una URL similar a:

https://plugins.svn.wordpress.org/slug-del-plugin

A partir de ese momento, las versiones que publiques en este repositorio serán utilizadas por WordPress.org para distribuir tu plugin y sus futuras actualizaciones.

En este tutorial veremos paso a paso cómo publicar un plugin utilizando TortoiseSVN en Windows.

Durante este proceso publiqué en WordPress.org el plugin:

MCOD Minimalist Checkout for WooCommerce

1. ¿Qué necesitas antes de comenzar?

TortoiseSVN

Para este tutorial utilizaremos TortoiseSVN, un cliente gráfico para SVN integrado directamente con el Explorador de archivos de Windows.

Puedes descargarlo desde su página oficial:

Descargar TortoiseSVN

Después de instalarlo, es recomendable reiniciar Windows para asegurarte de que todas las opciones de TortoiseSVN aparezcan correctamente en el menú contextual del Explorador de archivos.

También puedes utilizar otro cliente SVN, pero los pasos de este tutorial están explicados utilizando TortoiseSVN.

Credenciales SVN de WordPress.org

Necesitarás:

  • Tu username de WordPress.org.
  • Tu SVN Password de WordPress.org.

El usuario SVN es el mismo username de la cuenta de WordPress.org con la que enviaste el plugin.

Importante: el username distingue entre mayúsculas y minúsculas.

WordPress.org permite generar una contraseña específica para SVN desde la configuración de tu cuenta.

Puedes administrar tu contraseña SVN desde:

Configurar SVN Password en WordPress.org

Mi perfil de desarrollador en WordPress.org:

Cristian Leguizamón en WordPress.org

2. Preparar los assets del plugin

Antes de publicar el plugin, es recomendable preparar las imágenes que aparecerán en su página pública de WordPress.org.

Estas imágenes se almacenan en la carpeta:

/assets/

Banner principal

banner-772x250.png

Dimensiones:

772 × 250 px

Banner Retina

banner-1544x500.png

Dimensiones:

1544 × 500 px

La versión de alta resolución complementa al banner normal, por lo que debes mantener también el archivo banner-772x250.png.

Versiones RTL

Opcionalmente puedes crear versiones destinadas a idiomas que se leen de derecha a izquierda, como árabe o hebreo:

banner-772x250-rtl.png
banner-1544x500-rtl.png

Importante: no es necesario crear estos archivos si simplemente van a ser una copia exacta del banner normal.

La documentación de WordPress recomienda utilizar la variante RTL únicamente cuando exista una adaptación real del diseño.

Iconos del plugin

Los tamaños habituales son:

icon-128x128.png
icon-256x256.png

WordPress utiliza estos iconos tanto en el directorio de plugins como en diferentes interfaces relacionadas con WordPress.org.


Screenshots

Si quieres mostrar capturas del funcionamiento del plugin puedes utilizar:

screenshot-1.png
screenshot-2.png
screenshot-3.png
screenshot-4.png

Y continuar la numeración según sea necesario.

Los nombres deben utilizar minúsculas. WordPress también admite imágenes JPG para las capturas.

Las descripciones que aparecen debajo de estas imágenes se configuran desde la sección Screenshots del archivo readme.txt.

3. Crear una carpeta local para tus plugins SVN

Puedes crear una carpeta en tu computador destinada a tus repositorios de WordPress.org.

Por ejemplo:

C:\WordPress-Plugins\

Dentro puedes trabajar con una carpeta correspondiente al slug de cada plugin:

C:\WordPress-Plugins\slug-del-plugin\

También puedes permitir que TortoiseSVN cree la carpeta durante el proceso de Checkout.

4. Descargar el repositorio con SVN Checkout

Supongamos que WordPress.org te entregó el siguiente repositorio:

https://plugins.svn.wordpress.org/slug-del-plugin/

Haz clic derecho sobre la ubicación donde quieres guardar el repositorio.

Selecciona:

SVN Checkout…

Dependiendo de tu instalación también puede aparecer dentro de:

TortoiseSVN → Checkout…

En:

URL of repository

coloca:

https://plugins.svn.wordpress.org/slug-del-plugin/

Mantén:

Checkout Depth: Fully recursive
Revision: HEAD revision

Luego presiona:

OK

TortoiseSVN descargará el repositorio y puede solicitar las credenciales de WordPress.org.

5. ¿Debo crear trunk, tags y assets manualmente?

Normalmente, no.

Cuando haces Checkout del repositorio oficial del plugin, WordPress.org ya tiene preparada la estructura principal:

slug-del-plugin/
│
├── assets/
├── tags/
└── trunk/

WordPress.org crea estas tres carpetas por defecto en los repositorios de plugins.

Cada una tiene una función diferente.

trunk

Contiene el código actual del plugin.

tags

Contiene las versiones publicadas.

Por ejemplo:

tags/
├── 1.0.0/
├── 1.0.1/
├── 1.1.0/
└── 1.2.0/

assets

Contiene los elementos visuales utilizados por la página del plugin en WordPress.org:

assets/
├── banner-772x250.png
├── banner-1544x500.png
├── icon-128x128.png
├── icon-256x256.png
├── screenshot-1.png
└── screenshot-2.png

Los assets no forman parte del ZIP que los usuarios descargan, por eso deben permanecer fuera de trunk. WordPress recomienda colocar aquí banners, iconos y screenshots.

6. Copiar el plugin dentro de trunk

Toma la versión final del plugin y copia todos sus archivos dentro de:

slug-del-plugin/trunk/

Por ejemplo:

trunk/
│
├── slug-del-plugin.php
├── readme.txt
├── uninstall.php
├── includes/
├── admin/
├── public/
└── languages/

El archivo PHP principal debe quedar directamente dentro de trunk.

No hagas esto:

trunk/
└── slug-del-plugin/
    └── slug-del-plugin.php

La documentación oficial advierte que colocar el plugin completo dentro de otra subcarpeta de trunk puede romper las descargas generadas por WordPress.org.

7. No subir archivos innecesarios de Git

Si desarrollaste el plugin utilizando Git o GitHub, evita incluir archivos utilizados únicamente para desarrollo.

Por ejemplo:

.git/
.gitignore
.github/

Tampoco deberías publicar archivos temporales, configuraciones de tu IDE, backups o herramientas que no sean necesarias para ejecutar el plugin.

El repositorio SVN de WordPress.org debe utilizarse principalmente como repositorio de publicación, no como repositorio de desarrollo cotidiano. WordPress recomienda subir cambios terminados en lugar de realizar commits por cada pequeño cambio.

8. Revisar la versión del plugin

Antes del primer Commit debes comprobar la versión declarada en el archivo PHP principal.

Por ejemplo, si vas a publicar:

1.0.0

el encabezado del plugin debería contener:

/**
 * Plugin Name: Nombre del Plugin
 * Version: 1.0.0
 */

Por lo tanto:

Version: 1.0.0

9. Revisar el Stable Tag del readme.txt

Ahora abre:

readme.txt

En la cabecera debe aparecer:

Stable tag: 1.0.0

Si estás publicando la versión 1.0.0, lo recomendable es que coincidan:

Plugin PHP:
Version: 1.0.0

readme.txt:
Stable tag: 1.0.0

Tag SVN:
tags/1.0.0/

El Stable tag indica cuál es la versión estable del plugin y utiliza únicamente números y puntos. WordPress recomienda versionado semántico.

10. Revisar el Changelog

Antes de publicar también debes actualizar la sección:

== Changelog ==

Por ejemplo:

== Changelog ==

= 1.0.0 =
* Initial release.

En futuras versiones podrías tener:

== Changelog ==

= 1.1.0 =
* Added new checkout customization options.
* Improved WooCommerce compatibility.
* Fixed minor interface issues.

= 1.0.0 =
* Initial release.

Cada versión debería documentar los cambios más importantes realizados.

11. Agregar los archivos nuevos al SVN

Una vez hayas copiado el plugin dentro de trunk, TortoiseSVN detectará los nuevos archivos.

Estos archivos pueden aparecer con un icono indicando que todavía no forman parte del repositorio.

Selecciona los archivos o la carpeta correspondiente y utiliza:

TortoiseSVN → Add…

Marca los archivos que deseas agregar.

Una vez agregados estarán preparados para el Commit.

En SVN, copiar los archivos a la carpeta local no significa automáticamente que estén incluidos en el repositorio: primero deben añadirse y posteriormente enviarse mediante un Commit.

12. Hacer el primer Commit de trunk

Haz clic derecho sobre:

trunk

Selecciona:

SVN Commit…

Revisa los archivos que serán enviados.

Puedes utilizar un mensaje como:

Initial plugin release 1.0.0

O:

Prepare version 1.0.0 for release

También:

Release version 1.0.0

Finalmente presiona:

OK

TortoiseSVN enviará el código a WordPress.org.

Los commits de SVN requieren un mensaje que describa el cambio realizado.

13. Crear el Tag de la versión

Después de comprobar que trunk contiene exactamente la versión que quieres publicar, debes crear el Tag.

Si la versión es:

1.0.0

debes terminar con:

tags/1.0.0/

El Tag representa una versión concreta del plugin.

WordPress.org recomienda crear un tag para cada release formal.

14. Crear el Tag utilizando TortoiseSVN

Haz clic derecho sobre:

trunk

Selecciona:

TortoiseSVN → Branch/Tag…

TortoiseSVN mostrará la URL actual correspondiente a trunk.

Como destino utiliza:

https://plugins.svn.wordpress.org/slug-del-plugin/tags/1.0.0

Por ejemplo:

From:
https://plugins.svn.wordpress.org/slug-del-plugin/trunk

To:
https://plugins.svn.wordpress.org/slug-del-plugin/tags/1.0.0

Puedes utilizar como mensaje:

Tag version 1.0.0

O:

Tagging version 1.0.0

Presiona:

OK

SVN creará el Tag copiando el contenido de trunk.

Esta es precisamente la estrategia recomendada por WordPress: crear cada versión etiquetada a partir del código de trunk.

15. ¿Por qué el Tag puede no aparecer inmediatamente en mi carpeta local?

Cuando utilizas:

TortoiseSVN → Branch/Tag

puedes crear el nuevo Tag directamente en el repositorio remoto.

Eso significa que el Tag puede existir en WordPress.org pero todavía no aparecer en tu copia local.

Para actualizarla:

Haz clic derecho sobre la carpeta principal del repositorio y selecciona:

SVN Update

Después debería aparecer:

tags/
└── 1.0.0/

16. No modificar Tags ya publicados

Una vez que hayas creado:

tags/1.0.0/

debes considerarlo una versión publicada y cerrada.

No es recomendable seguir modificando su código.

Si encuentras un error, crea una nueva versión.

Por ejemplo:

1.0.0

pasa a:

1.0.1

Después crearías:

tags/1.0.1/

La estructura terminaría siendo:

tags/
│
├── 1.0.0/
├── 1.0.1/
├── 1.1.0/
└── 1.2.0/

De esta forma mantienes un historial claro de todas las versiones publicadas.

17. Subir los assets del plugin

Ahora copia las imágenes preparadas anteriormente dentro de:

/assets/

Por ejemplo:

slug-del-plugin/
│
├── assets/
│   ├── banner-772x250.png
│   ├── banner-1544x500.png
│   ├── banner-772x250-rtl.png
│   ├── banner-1544x500-rtl.png
│   ├── icon-128x128.png
│   ├── icon-256x256.png
│   ├── screenshot-1.png
│   └── screenshot-2.png
│
├── tags/
│   └── 1.0.0/
│
└── trunk/

Muy importante:

No debes colocar los assets de WordPress.org dentro de:

trunk/assets/

La ubicación correcta es:

/assets/

al mismo nivel que:

/tags/
/trunk/

La documentación oficial de WordPress establece precisamente esta estructura para screenshots, banners e iconos.

18. Agregar los assets al SVN

Después de copiar las imágenes:

Haz clic derecho sobre:

assets

Selecciona:

TortoiseSVN → Add…

Marca las imágenes nuevas.

Después realiza el Commit.

19. Hacer Commit de los assets

Haz clic derecho sobre:

assets

Selecciona:

SVN Commit…

Puedes utilizar mensajes como:

Add WordPress.org plugin assets

O:

Add plugin banners and icons

Si también añadiste screenshots:

Add plugin banners, icons and screenshots

Realiza el Commit.

Después de que WordPress.org procese los cambios, las imágenes comenzarán a aparecer en la página pública del plugin.

20. Comprobar el plugin en WordPress.org

Después de publicar la versión, entra en:

https://wordpress.org/plugins/slug-del-plugin/

Comprueba:

  • Nombre del plugin.
  • Versión publicada.
  • Descripción.
  • Changelog.
  • Banner.
  • Icono.
  • Screenshots.
  • Botón de descarga.
  • Información del desarrollador.

También puedes revisar el código directamente desde la sección Development de la página del plugin.

21. Cómo publicar futuras actualizaciones

Supongamos que actualmente tienes:

1.0.0

y quieres publicar:

1.1.0

Antes de comenzar es recomendable actualizar tu copia local:

SVN Update

Después actualiza los archivos dentro de:

trunk/

Cambiar la versión del plugin

En el archivo PHP principal:

Version: 1.1.0

Cambiar el Stable Tag

En:

readme.txt

cambia:

Stable tag: 1.1.0

Actualizar el Changelog

Añade:

= 1.1.0 =
* Descripción de los cambios realizados.

Por ejemplo:

== Changelog ==

= 1.1.0 =
* Added new configuration options.
* Improved WooCommerce compatibility.
* Fixed minor bugs.

= 1.0.0 =
* Initial release.

22. Hacer Commit de la nueva versión

Después de actualizar trunk, realiza:

SVN Commit…

Puedes utilizar:

Release version 1.1.0

O:

Prepare version 1.1.0

23. Crear el nuevo Tag

Cuando trunk tenga exactamente la versión que quieres publicar:

Haz clic derecho sobre:

trunk

Selecciona:

TortoiseSVN → Branch/Tag…

Y crea:

tags/1.1.0/

Por ejemplo:

https://plugins.svn.wordpress.org/slug-del-plugin/tags/1.1.0

Mensaje:

Tag version 1.1.0

Nunca reemplaces el Tag anterior.

Con el tiempo tendrás:

tags/
│
├── 1.0.0/
├── 1.0.1/
├── 1.1.0/
├── 1.2.0/
└── 2.0.0/

24. Estructura final recomendada del repositorio

Tu repositorio debería terminar con una estructura similar a esta:

slug-del-plugin/
│
├── assets/
│   ├── banner-772x250.png
│   ├── banner-1544x500.png
│   ├── icon-128x128.png
│   ├── icon-256x256.png
│   ├── screenshot-1.png
│   └── screenshot-2.png
│
├── tags/
│   ├── 1.0.0/
│   └── 1.1.0/
│
└── trunk/
    ├── slug-del-plugin.php
    ├── readme.txt
    ├── uninstall.php
    ├── includes/
    ├── admin/
    ├── public/
    └── languages/

Recomendaciones finales

Antes de publicar cualquier versión comprueba siempre:

  • La versión del archivo PHP principal.
  • El Stable tag del readme.txt.
  • El Changelog.
  • Que trunk contiene únicamente los archivos necesarios.
  • Que el Tag utiliza exactamente el mismo número de versión.
  • Que no estás modificando un Tag publicado anteriormente.
  • Que los banners, iconos y screenshots están en /assets/.
  • Que no tienes archivos de desarrollo innecesarios.
  • Que hiciste SVN Update antes de comenzar una nueva actualización.

Mantener esta estructura hará que las publicaciones y futuras actualizaciones del plugin sean mucho más fáciles de gestionar.

Documentación oficial

Para profundizar en el funcionamiento de SVN y el directorio de plugins puedes consultar:

Using Subversion — WordPress Plugin Handbook

Cómo funciona readme.txt

Plugin Assets — WordPress Plugin Handbook

TortoiseSVN

Plugin publicado durante este tutorial

El plugin que publiqué en WordPress.org mientras realizaba este proceso fue:

MCOD Minimalist Checkout for WooCommerce

Puedes verlo aquí:

MCOD Minimalist Checkout for WooCommerce en WordPress.org

La ficha pública confirma que el plugin está publicado bajo Cristian Leguizamón y permite acceder desde su sección de desarrollo tanto al código como al repositorio SVN.

Sobre el autor

Soy Cristian Leguizamón, desarrollador especializado en WordPress, WooCommerce y desarrollo web.

Puedes encontrar más tutoriales, proyectos y recursos de desarrollo en:

DevCristian.com

También puedes consultar mi perfil oficial y mis plugins publicados en WordPress.org:

Perfil de Cristian Leguizamón en WordPress.org

Actualmente mi perfil cuenta con la insignia Plugin Developer y muestra los plugins y contribuciones realizadas dentro de WordPress.org.

¿Necesitas una funcionalidad que no existe en WordPress?

Desarrollamos plugins, integraciones y funcionalidades personalizadas para que tu sitio o tienda WooCommerce haga exactamente lo que tu negocio necesita, con código seguro, compatible y preparado para crecer.

Compartir esta información