El cómo subir un plugin al repositorio de plugins de WordPress es una pregunta recurrente que me hacen. Me tomó meses entenderlo, por eso en este tutorial abaracaré todo el proceso, desde el registro, conceptos, hasta la carga del plugin e instalación de subversion.

Registro en WordPress Extend y Solicitud de Hosting

Bien, lo primero que necesitamos para subir el plugin a WordPress es la aprobación de WordPress Extend. Para ello debemos registrarnos en WordPress Extend.

Luego de eso nos dirijimos a la sección WordPress Plugins (debemos estar loggeados) y le damos clic al enlace que dice Add it.

Una vez alli tendremos un formulario con 3 campos:

1- Plugin name (required)
2- Plugin Description (required)
3- Plugin URL

En el primer campo ponemos el nombre de nuestro plugin. Por ejemplo: Mi primer plugin.

En el segundo campo ponemos una descripción de lo que hace (en inglés).

El tercer campo es opcional y es solo para que los de WordPress puedan probar el plugin si es que ya lo tienes hosteado en algún lugar. No es obligatorio, yo no lo hice.

Importante: Esta observación es muy, muy importante. Deben saber que el nombre que le den al plugin determinará la ruta del cómo será la ruta del hosting de nuestro plugin en WordPress. Por ejemplo, dado que nuestro plugin se llama Mi primer plugin, entonces la ruta del plugin será algo como /mi-primer-plugin/ y el archivo zippeado cuando esté en WordPress plugins será mi-primer-plugin.zip y la carpeta interior también.

Esto es importante porque si dentro del plugin usamos otra ruta para llamar a los archivos dentro del plugin, esto puede ocasionar errores ya que deberemos renombrar la carpeta antes de cargar el plugin. Éste fue mi error ya que mi plugin se llamaba KnxDT Bookmarks WordPress Plugin y la carpeta (original) tenía de nombre knxdt_bookmarks. Empero WordPress no carga la carpeta que contiene todo, solo los archivos internos, ya lo revisaremos más adelante.

Listo, una vez que hemos enviado nuestra solicitud para subir nuestro plugin a WordPress solo queda a esperar la respuesta.

Aprobación de Solicitud y Revisión del Repositorio

Si hemos tenido éxito (lo cual sucede en un 99% de los casos) nos llegará un email con el siguiente título:

[WordPress Plugins] Request Approved: mi-primer-plugin

El contenido del email (solo cambian el nombre) fue en mi caso:

Como pueden ver hay varios enlaces. De ellos por el momento y el más importante será el que está de rojo, que tiene la siguiente forma:

http://svn.wp-plugins.org/mi-primer-plugin/

Ésa será la carpeta donde se cargará nuestro plugin. Ese es el llamado repositorio de WordPress para nuestro plugin y el único que podremos modificar. El repositorio general es:

http://svn.wp-plugins.org/

alli veremos cientos de carpetitas, cada carpeta corresponde a un plugin. Por ejemplo:

http://svn.wp-plugins.org/akismet/
http://svn.wp-plugins.org/all-in-one-seo-pack/
http://svn.wp-plugins.org/knxdt-bookmarks-wordpress-plugin/

Todas las carpetas dentro tienen la misma estructura:

Se trata de 3 carpetas y un número de revisión. Creo que estamos listos para aprender a qué se refieren con subversion. Tener en cuenta el número de revisión que mencionaremos más adelante.

Subversion para Plugins en WordPress: Conceptos

Si revisamos alguno de los enlaces que WordPress nos proporcionó en el email de aprobación, veremos que no explica nada claro del todo y luego hay una serie de códigos de conexión en consola. Para serles sincero, jamás me gustó esa manera, así que la necesidad me hizo buscar otra más sencilla.

Primero que nada ¿qué es svn? SVN o Subversion es un sistema de control de versiones. ¿Para qué me sirve? ¿de qué manera me ayuda? Subversion te ayuda a llevar un control de las versiones nuevas y anteriores de tu plugin. Llevar un log de archivos y control de fallas, así como permitir actualizaciones automáticas gracias a edición local.

Cuando menciono edición local me refiero a que no necesitas modificar un archivo de tu programa (o plugin) desde el hosting de WordPress, sino que basta con que lo modifiques en tu ordenador local y luego cargues los cambios, los cuales se reflejarán en tu carpeta del repositorio (recuerden el http://svn.wp-plugins.org/mi-primer-plugin/).

¿Para qué me sirven esos comandos a los que hace referencia WordPress? Sirven para establecer la conexión entre tu ordenador local y el hosting. Esta conexión debe ser tal de manera que solo tú puedas modificar el contenido del plugin. Tú o quienes tengan permiso. Si una persona con permisos hace un cambio éste se reflejará en todas las demás carpetas de las personas que tengan permisos de modificación o solo de lectura.

Por ejemplo si el plugin lo han hecho tú y otro amigo, el svn debe estar configurado para ser modificado por ambos. Tú te encargas tal vez de modificar la carpeta de imágenes y tu amigo la carpeta de código. Tus cambios se reflejarán en su ordenador y en el hosting; los cambios de él se relejarán también en tu ordenador y en el hosting. Aquellos que accedan al hosting (de WordPress) a descargar el plugin con solo permisos de lectura, jamás podrán modificar su contenido.

TortoiseSVN: Cliente Subversion para subir nuestro plugin a WordPress

No nos complicaremos la vida (ya tenemos bastante con lo de arriba) usando subversion con línea de comandos, de modo que usaremos un software especial. El software que usaremos será el llamado TortoiseSVN, solo para Windows.

Requisitos mínimos: Windows 2000 sP2, XP o superior.

¿Cumples con eso? Ok, entonces a descargarlo. Clic aqui para descargar TortoiseSVN.

Para versiones anteriores (Windows 98, ME, NT4) pueden probar las versiones de TortoiseSVN anteriores a la 1.2.0. Si usas Linux puedes probar otros clientes.

Instalamos Tortoise subversion.

Ya casi estamos listos. Ahora a organizar nuestros archivos.

¿Recuerdan las 3 carpetas de cada plugin? Son las llamadas trunk, tags y branches. De éstas solo nos importan las dos primeras, ya que la tercera es de configuración propia.

La carpeta trunk contendrá la versión actual de nuestro plugin. Por ejemplo una carpeta llamada 1.2.

La carpeta tag contendrá el log de todas las versiones (incluyendo la actual). En mi caso aparecen dos versiones (la 1.0 no la cargué ya que no entendía aún esto del svn, pero sí puedo hacerlo luego).

El software es capaz de detectar cambios en las versiones y asignarle el número de versión adecuada al conjunto de archivos que están en trunk. Dado que es nuestro primer plugin no tendremos muchos problemas dado que WordPress ya nos tiene creadas esas 3 carpetas en el repositorio asignado a nuestro plugin (exacto: http://svn.wp-plugins.org/mi-primer-plugin/). Entonces lo que debemos hacer ahora es descargar esa carpeta de WordPress (con sus trunk, tags y branches) a nuestro ordenador local.

A ordenarnos entonces. Primero creemos una carpeta desde la cual controlaremos nuestro plugin. Recomiendo que se encuentre en algún disco raíz (no dentro de varias subcarpetas ni en Mis Documentos) para así evitar borrarlo de casualidad. Aún así si borrásemos esta carpeta el cambio no se reflearía en el hosting de WordPress ¿No que sí se reflejaba? Sí lo hace, pero primero debemos decírselo, de lo contrario se mantiene tal cual y no pasa nada.

Yo tengo creada mi carpeta en el disco D y le puse de nombre my-local-dir.

Es el momento de comenzar. Cierren el msn o pónganse en no disponible ya que esta parte es muy importante y hay que tener cuidado. Es sencilla pero cuidadosa.

Subir el plugin al repositorio de WordPress

Listo, a bajarnos el contenido del repositorio del plugin para tener las 3 carpetitas.

Veremos que tenemos nuevos menúes contextuales en Windows al dar clic derecho sobre nuestro my-local-dir. Bien, hacemos clic derecho entonces y seleccionamos SVN Checkout:

Esto nos servirá para revisar los cambios en nuestro repositorio del plugin. Al hacer esto el programa nos pedirá una ruta desde la cual descargaremos los cambios. Le damos la ruta que hemos mencionado en todo el tutorial, la ruta de nuestro repositorio. Así.

Clic en OK (si hemos dado clic derecho en la carpeta mencionada, la ruta de Checkout Directory se llena por defecto, ver imagen anterior). Veremos como el contenido comienza a descargarse en nuestra carpeta local.

Listo. Al final nos quedará algo así.

Una vez esto cargamos nuestras carpetas con las versiones que dije. Por ejemplo imaginemos que es la versión 1.0 de nuestro plugin y que consta de 3 archivos, entonces tendremos el siguiente esquema de carpetas.

Imaginemos que luego actualizamos a una nueva versión 1.1. Entonces el nuevo esquema sería algo como sigue.

Nótese que los documentos de trunk y de la última versión de tag siempre deben ser iguales.

Ya tenemos el contenido de nuestro plugin en nuestras carpetas. Ahora solo resta subirlo a WordPress. Clic derecho sobre la carpeta my-local-dir y seleccionamos SVN Commit.

Clic en Select All para seleccionar todos los archivos (dado que es la primera vez se mostrarán todos, luego ya solo los que vayamos cambiando). Clic en OK.

Nos aparecerá un cuadro de login para autentificarnos. ¿Qué usuario y qué clave? Es necesario que nos la pida sino cualquiera cargaría cambios a nuestro repositorio.

Dado que es un repositorio de WordPress, nos loggeamos con nuestra cuenta de WordPress Extend (la que creamos al inicio de todo).

Nota: Tener cuidado respetando mayúsculas y minúsculas. Desconocer esto me llevó a perder 4 horas la primera vez intentando encontrar el error, dado que mi nombre de registro es KnxDT y yo me estaba intentando loggear con knxdt.

Cada vez que hagamos una actualización el número de revisión cambiará,

Ahora se nos muestra un registro de cambios.

Clic en OK. Hemos terminado de subir nuestro plugin. Ahora puedes ver el resultado en:

http://wordpress.org/extend/plugins/mi-primer-plugin/

El zip de descarga tendrá esta ruta:

http://downloads.wordpress.org/plugin/mi-primer-plugin.zip

Donde mi primer plugin es el nombre de tu plugin.

Notas y recomendaciones finales

Cuando quieran crear nuevas versiones solo crean una nueva carpeta con el nombre de la versión, manteniendo la estructura que mostré arriba. Si actualizan algún tag de última versión sin actualizar el trunk les puede aparecer algo como ésto.

Solo hagan que la carpeta de la última versión del tag sea igual a la del trunk. Eso también les puede aparecer antes de actualizar en el repositorio, es decir, que los cambios se han hecho solo localmente, es una alerta.

Otra cosa importante es el archivo readme.txt. Este archivo es importantísimo dado que contiene todos los datos que se mostrarán en nuestra página del plugin. Dije página no repositorio, para diferenciar un ejemplo:

Página del plugin: http://wordpress.org/extend/plugins/knxdt-bookmarks-wordpress-plugin/

Repositorio del plugin: http://svn.wp-plugins.org/knxdt-bookmarks-wordpress-plugin

Toda la información de la página depende del archivo ubicado en esta ruta:

http://svn.wp-plugins.org/knxdt-bookmarks-wordpress-plugin/trunk/readme.txt

En el readme.txt del fichero trunk (versión actual). Les recomiendo que vean la estructura del readme.txt de mi plugin y vean cómo se ve en la página (links de arriba). Asimismo revisen la estructura estándar y también validen su readme.txt con el Readme Validator para ver si está correcto.

Por cierto, no usen tildes, a menos que estén en formato html, como por ejemplo usen á para representar la letra á, é para la e, etc. La ñ es ñ y creo que con eso basta.

Feliz mantenimiento del plugin. Cualquier duda o comentario es bienvenido :up:

Etiquetas: ,

Comentarios ( 27 ) en: Cómo subir un plugin al repositorio de WordPress
  • ejner69 dijo:

    Gracias! Gracias! Gracias! Gracias!
    Hace tiempo que deseaba aprender a subir plugins al repositorio de WordPress!
    :up:

  • braulioaquino dijo:

    Waaa, mucha información pero se ve interesante, lo dejo con una estrellita para cuando lo necesite o tenga mas tiempo.

  • Teo Atienza dijo:

    Ni idea de cómo hacer un plugin :) Pero intuyo que esta información será importantísima para muchos lectores (y espero que para mi también en un futuro) y, de nuevo, te felicito por todo el esfuerzo que le pones a este blog.
    Saludos.

  • KnxDT dijo:

    Teo, en breve postearé una guía básica, muy muy básica de cómo hacer un plugin.

    Saludos y gracias por tu comentario :up:

  • Diego dijo:

    Muy buena la entrada, esto aclara muchas dudas que tenía acerca del proceso.

    Saludos!

  • joaquin dijo:

    Buenas tardes e seguido todos tus pasos pero a la hora de subir el plugin es el Imaset 2.1 y no se los archivos que tengo que suvir por que son distintos a los que tu mencionas.
    Gracias por anticipado.

  • Rudy dijo:

    Gracias por las instrucciones. Estos días he subido mi primer plugin (bueno, en realidad, he hecho y subido mi primer plugin) y este post me ha sido muy útil para apañármelas con el subversions.

  • KnxDT dijo:

    @joaquin: Tal vez lo que estés haciendo es instalando un plugin.

    @Rudy: De nada hermano, me alegro que te haya servido.

    Saludos.

  • braulio dijo:

    Como lo dije hace 10 meses: “… lo dejo con una estrellita para cuando lo necesite …”.

    Listo, lo necesité, lo usé y todo salió muy bien.

    Gracias!

  • KnxDT dijo:

    Me alegro mucho, Braulio. Yo también hace poco me releí a mi mismo porque debi darle mantenimiento al plugin pero ahora desde mi nueva laptop y al menos me sirvió para la instalación. Sin embargo la usaré de nuevo por completo porque acabo de crear otro plugin que en menos de 1 semana (probablemente mañana) esté viendo la luz.

    Saludos y gracias por comentar.

  • jodacame dijo:

    Muy buena guia, me ha servido mucho para hacerme una idea de como subir mi plugin ya que el aplicativo que recomiendas no me funciona debido a que uso Linux.

    Tengo una pregunta, he subido mi plugin FM Twitter 2.0 , ya he subido varias versiones voy por la 0.5 pero en wordpress me sigue mostrando la 0.1 como “Current version” y las otras “que son mas estables” las muestra como “Others Version”, alguien sabe como puedo corregir este problema.

    Muchas Gracias.

  • KnxDT dijo:

    @jodacame: Para indicar la versión actual de tu plugin debes fijarte que en el readme se indique:

    Stable tag: trunk

    O sino:

    Stable tag: 0.5

    El primer caso se usará si dentro de la carpeta trunk has puesto los archivos de la versión 0.5. La segunda alternativa se puede usar si quieres forzar que el plugin tome los archivos de una versión que hayas subido anteriormente.

    Gracias por tu pregunta. Saludos.

  • Sebastian Barría dijo:

    Excelente!…me acabas de facilitar la vida para subir mi primer plugin!!!

  • Teorico dijo:

    excelente, muchas gracias, no sabes cuantos dolores de cabeza me dio el subir mi plugin al repositorio de WordPress.

    acá les dejo el link a mi plugin…

    http://wordpress.org/extend/plugins/easy-paygol/

    PS: al parecer no se están visualizando las imagenes en donde muestras como quedan finalmente las carpetas trunk y tag, de igual forma con la explicación queda claro cual debe ser su contenido.

    te reitero mis agradecimientos…

    saludos,
    Teorico…

  • Caballero dijo:

    Hay una parte del tutorial que faltan las imagenes, es la parte del esquema de carpetas de versiones del plugin. No entiendo muy bien como funciona para pasar por ejemplo de 1.0 a 1.1. Tu editas tus archivos en la trunk, y luego creas una carpeta nueva “1.1″ en tags y los copias dentro.¿En ese momento es cuando haces commit?

  • KnxDT dijo:

    @Caballero: Exacto, doctor, luego de tener todo listo haces el commit, sino saldrá error en el momento de intentarlo porque aparecerá un mensaje de incongruencia en el versionamiento.

    Saludos.

  • Caballero dijo:

    Me ha pasado algo raro, tengo 3 versiones, y la ultima la 0.0.3 es la mas actual. Pero en wordpress aparece como otras versiones, y la 0.0.2 como si fuese la actual (aunque luego se baja los archivos de trunk que son iguales a la 3).

  • KnxDT dijo:

    @Caballero: Revisa el encabezado del plugin que hace referencia a la versión en el trunk y en el archivo principal de la última versión en la carpeta tags.

    Saludos.

  • Malanga dijo:

    Saludos KnxDT,

    Gracias por la información…Pero sigo teniendo una duda: He leído todo el proceso y desde la configuración de mi cuenta en wordpress.com intento buscar un plugin que aparece en la lista de -Revision(link que añadiste más arriba) y he localizado en plugin… Pero desde mi pagina, no tengo opcion de buscar el plugin o no dice nada referente a añadir plugins nuevos, para poder buscar el que necesito y utilizarlo…
    He pensado que no hace falta descargarlo para volver a subirlo, puesto que ya está ahi metido(igual estoy errando, no lo sé)…El caso es que, otro duda que tengo..Cómo busco los plugins subidos en wordpress.org para usarlos en wordpress.com??…

    Hechame un cable en esto, si es que aun sigues al dia con este post.

    Saludos.

  • KnxDT dijo:

    Malanga:

    Los plugins disponibles en WordPress.org no están todos disponibles en WordPress.com, solo los que WordPress decida, así que no te sorprendas si subes tu propio plugin y no lo puedes instalar en WP.com.

    Saludos.

  • Antony dijo:

    hola, gracias por este excelente tema que ya tiene mas de 1 año y aun es de utilidad :)

    tengo una pequeña duda…

    pasa que yo actualice mi plugin pero la pagina del plugin no se actualiza con la informacion en el archivo “readme.txt” que tengo en la carpeta trunk.

    tengo como “Stable tag: trunk” logicamente en “tags” tengo la carpeta con la version mas reciente cuyo contenido es igual que la de trunk.

    espero puedas ayudarme con esta duda.

    PD
    Probe el archivo readme.txt con la herramienta http://wordpress.org/extend/plugins/about/validator/
    y no tengo errores.

  • KnxDT dijo:

    Hola Antony:

    No te preocupes, si todo está correcto, el proceso de actualización puede demorar algunos minutos. Paciencia.

    Saludos.

  • Antony dijo:

    sk no son minutos los que estoy esperando xD

    ya casi llega al mes y no actualizan la info ^^

    ¿Que estaran esperando? xD

  • Shafie dijo:

    Hoy he seguido tus instrucciones y acabo de lanzar la petición para subir mi primer plugin.

    Gracias por la info.

  • svn y el repositorio de wordpress.org | Kesweh dijo:

    [...] usando un cliente svn para Windows [...]

  • lee dijo:

    Gracias a tu ayuda pude subir y dejar habilitado mi primer plugin, así que muy agradecido!!!

    Cabe destacar que las últimas versiones del TortoiseSVN requieren que especifiques los cambios realizados al momento de hacer Commit.

    A mí me dio el siguiente error:
    “ERROR Commit blocked by pre-commit hook (exit code 1) with output:”

    Y después de buscar me encontré con la solución (que es la que comenté arriba)
    http://christmaswebmaster.com/2857/svn-error-commit-blocked-pre-commit-hook-exit-code-1-big-deal

    Saludos.

  • KnxDT dijo:

    Gracias por la información, Lee. En efecto, como bien comentas, antes no era necesario ingresar información sobre los cambios realizados como parte del log antes de realizar el commit.

    Saludos!