Unlimited Wordpress themes, plugins, graphics & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Web Design
  2. WordPress

Cómo crear un plugin de WordPress personalizado desde cero

by
Difficulty:AdvancedLength:LongLanguages:

Spanish (Español) translation by Marilu (you can also view the original English article)

Cada sitio de WordPress necesita un tema para sacar el contenido de la base de datos y mostrarlo en un diseño. Y teóricamente se podría ejecutar un sitio con solo un tema y nada más. Pero ese sitio sería muy limitado sin la adición de plugins.

Los plugins añaden una funcionalidad extra a tu sitio de WordPress, además de lo que viene con el núcleo de WordPress. Todo, desde un calendario de reservas o un deslizador animado, hasta un completo sistema de gestión de aprendizaje o un mercado en línea, puedes añadirlos todos a tu sitio con plugins.

En esta guía, te mostraré cómo crear tu propio plugin de WordPress. Te mostraré cómo usar las mejores prácticas en el desarrollo de plugins, cómo hacer que el código de tu plugin se ejecute y cómo estructurar el código y los archivos de tu plugin. También te guiaré a través del proceso de creación de tu primer plugin y responderé algunas preguntas frecuentes.

Plugins de WordPress gratuitos y de pago

Si quieres añadir algunas características específicas a tu sitio web, hay muchos lugares donde puedes comprar o descargar plugins. El directorio de plugins de WordPress incluye miles de plugins gratuitos que te ayudarán a crear el sitio que necesitas. Pero si buscas características más avanzadas, una mejor interfaz de usuario o un soporte mejorado, vale la pena comprar plugins premium de los autores en CodeCanyon.

CodeCanyon

¡Pero a veces podrías necesitar codificar tu propio plugin! Esto puede ser más eficiente que usar un plugin de terceros, ya que puede ser que solo necesites una parte del código proporcionado por esos. También significa que puedes desarrollar un plugin que satisfaga tus necesidades con mayor precisión, o puedes personalizar un plugin existente para adaptarlo a tu sitio.

¿Qué necesitas para hacer un plugin?

Para construir tu propio plugin y ejecutarlo en tu sitio de WordPress, necesitarás:

  • un editor de código
  • una instalación de desarrollo de WordPress con una copia de tu sitio en vivo para probar

¡No pruebes tu plugin en tu sitio en vivo hasta que sepas que funciona!

Si aún no tienes una instalación local de WordPress, sigue nuestra guía para copiar tu sitio a una instalación local. O si no puedes instalar WordPress localmente, usa un duplicado de tu sitio en una instalación de prueba en tu servidor. Averigua cómo copiar tu sitio.

Tipos de plugin de WordPress

Los plugins pueden llevar a cabo muchas tareas. Lo que todos tienen en común es que añaden una funcionalidad extra a tu sitio. Los tipos de plugin de WordPress incluyen:

  • plugins de mantenimiento del sitio para cosas como la seguridad, el rendimiento o las copias de seguridad
  • plugins de marketing y ventas para cosas como SEO, medios sociales o comercio electrónico
  • plugins de contenido como tipos de publicaciones personalizadas, widgets, códigos cortos, formularios, galerías y video.
  • Los plugins de API que funcionan con la API REST de WordPress o que extraen contenido externo de servicios como Google Maps
  • plugins de la comunidad que añaden características de redes sociales

...¡y muchas más! Para tener una idea de lo que pueden hacer los plugins, mira el directorio de plugins de WordPress y el mercado de CodeCanyon.

WordPress Plugin Directory

¿Qué va en un plugin?

Antes de empezar a construir tu plugin, vale la pena saber qué va dentro de un plugin. El aspecto exacto del código del plugin dependerá de este: algunos son pequeños, con un solo archivo de plugin, mientras que otros son masivos, con múltiples archivos de inclusión, scripts, hojas de estilo y archivos de plantillas. Y hay muchos que caen en algún lugar en el medio.

Los elementos que probablemente tengas en tu plugin son:

  • el archivo principal del plugin (esto es esencial)
  • carpetas para diferentes tipos de archivos
  • scripts
  • hojas de estilo
  • incluir archivos para organizar el código

Echemos un vistazo a cada uno de estos.

El archivo principal del plugin

El archivo principal del plugin es esencial. Siempre será un archivo PHP y siempre contendrá texto comentado que le diga a WordPress sobre tu plugin.

Aquí hay un ejemplo, del plugin de Akismet:

Esto le dice a WordPress lo que hace tu plugin, dónde encontrar más información sobre él y quién lo desarrolló. También da información sobre el número de versión y el dominio del texto y la ruta de internacionalización, así como la licencia.

WordPress toma esta información y la usa para llenar la pantalla de plugins en tu sitio. Así es como se ve Akismet en esa pantalla:

Akismet in plugins screen

Se puede ver que la información proporcionada en el archivo del plugin se utiliza para rellenar esta entrada y proporcionar enlaces.

Otra información sobre el plugin está contenida en el archivo README.txt, que se utiliza para rellenar la página del plugin en el directorio de plugins:

Akismet in plugin directory

El archivo principal del plugin también contendrá el código que hace que el plugin funcione. A veces eso será todo el PHP del plugin, pero para plugins más grandes, habrá llamadas para incluir archivos que contengan código extra. Esto te ayuda a organizar tu código y significa que no tienes un solo archivo desorganizado y largo con el que sea difícil trabajar. Te mostraré cómo usar los archivos de inclusión más adelante en esta guía.

Estructura de la carpeta

Aunque no hay reglas rígidas sobre cómo organizar las carpetas de tu plugin, tiene sentido adoptar la misma estructura que utilizan otros desarrolladores de plugins. Esto te familiarizará con la forma en que se construyen otros plugins y significa que si compartes tu código en el futuro, tendrá sentido para otras personas.

Las carpetas en tu plugin pueden incluir:

  • css o estilos para hojas de estilo
  • scripts para javascript
  • includes (incluye) para incluir archivos
  • plantillas para los archivos de plantilla que tu plugin produce
  • activos para medios de comunicación y otros archivos de activos
  • i18n para los archivos de internacionalización

Es posible que necesites usar más carpetas si tu plugin es grande o complejo. Por ejemplo, WooCommerce tiene carpetas para paquetes, datos de muestra y más. Estas a su vez incluyen subcarpetas para cosas como bloques y archivos de administración.

WooCommerce file structure

Scripts y Stylesheets (hojas de estilo)

Si tu plugin da salida a contenidos que necesitan ser estilizados, ya sea en el front-end o en las pantallas de administración, puede que necesites hojas de estilo.

Y si tu plugin usa scripts, necesitarás archivos para estos.

Tiene sentido guardarlas en tu propia carpeta, aunque solo tengas una de cada una. Necesitarás enlazar estos scripts y hojas de estilo usando una función dedicada en tu archivo principal de plugin. Te mostraré cómo hacerlo cuando estemos construyendo el plugin.

Incluir archivos

Si tu plugin necesita organización, puedes hacerlo dividiendo tu código en varios archivos, llamados archivos de inclusión.

Luego pones estos archivos en tu propia carpeta y los llamas en tu archivo principal de plugin usando una función de include (incluir) o require (requerir).

De esta manera, puedes mantener la mayor parte de tu código en una estructura de archivos organizada en la web, mientras que el archivo principal de tu plugin sigue siendo escaso y mínimo.

Si tu plugin no es tan grande, no necesitas usar archivos de inclusión: solo añade tu código al archivo principal del plugin. Pero puede que descubras que necesitas organizar este archivo y reordenar las funciones dentro de él a medida que los agregas, para mantener una estructura lógica.

Estos son los elementos más comunes de un plugin. Hemos visto en el ejemplo de WooCommerce que puede haber muchos más. O en los plugins más pequeños puede haber muchos menos. Pero a medida que desarrolles más plugins, te encontrarás usando estos elementos más y más.

Cómo ejecutar tu código de plugin: Opciones

Cuando añades código a tu plugin, no hará nada hasta que lo actives de alguna manera. Hay algunos métodos que puedes usar para activar tu código o sacar código de WordPress:

  • funciones
  • ganchos de acción y de filtro
  • clases

Echemos un vistazo a cada uno de estos.

Funciones

Las funciones son los bloques de construcción del código de WordPress. Son la forma más fácil de empezar a escribir tus propios plugins y la más rápida de codificar. También encontrarás muchos de ellos en los archivos de tus temas.

Cada función tendrá su propio nombre, seguido de los llaves y el código dentro de esas llaves.

El código dentro de tu plugin no funcionará a menos que llames a la función de alguna manera. La forma más simple (pero menos flexible) de hacerlo es llamando directamente al código en tu tema o en algún otro lugar de tu plugin.

Aquí hay una función de ejemplo:

Para llamar directamente a esa función en tu tema, solo tienes que escribir tutsplus_myfunction() en el lugar de los archivos de plantilla de tu tema donde quieres que se ejecute. O podrías agregarla en algún lugar de tu plugin... ¡pero también tendrías que activar el código que la llama!

Hay algunas limitaciones de esto:

  • Si la función hace algo que no sea simplemente añadir contenido en algún lugar de un archivo de plantilla de temas, no puedes activarla de esta manera.
  • Si quieres llamar a la función en varios lugares, tendrás que llamarla una y otra vez.
  • Puede ser difícil llevar la cuenta de todos los lugares a los que has llamado manualmente una función.

Es mucho mejor práctica llamar a las funciones uniéndolas a un gancho.

Ganchos de acción y de filtro

Al adjuntar tu función a un gancho, ejecutas su código cada vez que ese gancho se dispara. Hay dos tipos de ganchos: ganchos de acción y ganchos de filtro.

Los ganchos de acción están vacíos. Cuando WordPress llega a ellos, no hace nada a menos que una función haya sido enganchada a ese gancho.

Los ganchos de los filtros contienen un código que se ejecutará a menos que haya una función enganchada a ese gancho. Si hay una función, ejecutará el código en esa función en su lugar. Esto significa que puedes añadir código predeterminado a tu plugin pero anularlo en otro plugin, o puedes escribir una función que anule el código predeterminado que se adjunta a un gancho de filtro en el propio WordPress.

Los ganchos se disparan de tres maneras:

  • Por el mismo WordPress. El código central de WordPress incluye cientos de ganchos que se disparan en diferentes momentos. A cuál enganches tu función dependerá de lo que haga tu función y de cuándo quieras que se ejecute tu código. Puedes encontrar una lista de ganchos de WordPress en el manual del desarrollador.
  • Por tu tema. Muchos temas incluyen ganchos de acción y de filtro que puedes usar para añadir contenido extra en lugares clave del diseño de tu sitio web. Y todos los temas incluirán un gancho wp_head y wp_footer. Combínalos con etiquetas condicionales y podrás ejecutar código específico en ciertos tipos de páginas de tu sitio.
  • Por tu plugin u otros plugins. Puedes añadir un gancho de acción a tu plugin y luego añadir funciones en tus archivos include que adjunten código a ese gancho. O puedes escribir un gancho de filtro y luego tener una función que anule tu contenido en ciertas circunstancias. Alternativamente, si estás creando un plugin para complementar otro plugin, puedes enganchar tus funciones al gancho existente en el plugin de terceros. He hecho esto con WooCommerce por ejemplo, para personalizar lo que sale en las páginas de productos.

Algo de esto es más avanzado, pero con tu primer plugin, probablemente estarás enganchando tus funciones a una salida de gancho de acción o de filtro del propio WordPress, muy probablemente un gancho de acción.

Classes (Clases)

Las clases son una forma de codificar características más complejas como los widgets y elementos de personalización, que utilizan las API de WordPress existentes.

Cuando escribes una clase en tu plugin, probablemente estarás extendiendo una clase existente que está codificada en WordPress. De esta manera, puedes hacer uso del código proporcionado por la clase y ajustarlo para hacerlo tuyo. Un ejemplo sería el personalizador, en el que se podría escribir una clase que incluyera un selector de colores, utilizando la interfaz de usuario del selector de colores que se proporciona en la clase existente para el personalizador.

El uso de las clases es más avanzado que las funciones y es poco probable que lo hagas en tu primer plugin. Para obtener más información, consulta nuestra guía de clases en WordPress.

Si escribes las clases, tendrás que usar acciones o filtros para que se ejecuten.

Mejores Prácticas de Plugin

Antes de empezar a codificar tu plugin, es útil entender las mejores prácticas para los plugins para que tu código pueda ser de alta calidad desde el principio.

Esto incluye:

  • Escribe tu código según los estándares de codificación de WordPress. Si quieres enviar tu plugin al directorio de plugins, tendrás que hacerlo.
  • Utiliza los comentarios a lo largo de tu código para que otras personas puedan trabajar con él y para que recuerdes cómo funciona tu código cuando vuelvas a él en el futuro.
  • Nombra tus funciones, ganchos y clases usando prefijos para que sean únicos para tu plugin. No quieres darle a una función el mismo nombre que a otra función en un plugin diferente o en el núcleo de WordPress
  • Organiza tus carpetas de forma lógica y mantén tu código separado para que otras personas puedan entenderlo y para que puedas añadirlo a lo largo del tiempo sin que se convierta en un desastre.

Podrías pensar que el uso de las mejores prácticas no es necesario porque solo tú trabajas con el plugin. Pero tu plugin puede crecer con el tiempo, puedes dejar que otras personas lo usen, o puedes venderlo. O podrías volver a él en dos años y ¡no ser capaz de recordar cómo está organizado el código!

Creando tu primer plugin en cuatro pasos

¡Por fin! Tienes una base en cómo funcionan los plugins y es hora de arremangarse y crear tu primer plugin. Te voy a llevar a través del proceso de creación de un simple plugin que registre un tipo de post personalizado.

Se trata de un uso muy común de un plugin, y de algo que puede ser construido a lo largo del tiempo para añadir archivos de plantilla personalizados para tu tipo de publicación personalizada u otra funcionalidad.

Te mostraré el código básico del plugin y te daré una introducción de cómo puedes añadirlo con el tiempo.

1. Crear la carpeta y el archivo del plugin

Aunque tu plugin empiece pequeño con un solo archivo, es una buena práctica darle su propia carpeta. Empieza creando una carpeta en tu directorio wp-content/plugins. Dentro de eso, crea un archivo PHP para tu plugin.

Dales a ambos un nombre que tenga sentido e incluya un prefijo. Llamo a mi carpeta tutsplus-register-post-types y a mi archivo tutsplus-register-post-types.php.

Ahora abre el archivo del plugin y añade la información comentada en la parte superior. Puedes tomar el mío abajo y editarlo para reflejar el hecho de que este es tu plugin, no el mío.

Ahora si guardas tu archivo y vas a la pantalla de Plugins en tu sitio de desarrollo, verás el plugin en la pantalla:

Our plugin on the Plugins screen

Puedes activarlo si quieres, pero aún no hará nada, porque no le has añadido ningún código. Hagámoslo.

2. Añadir funciones

Ahora es el momento de escribir la primera función en nuestro plugin. Empieza por hacer tu plugin y añadir las llaves que contendrán el código. Aquí está el mío:

Esto incluye todas las etiquetas y argumentos para tu tipo de mensaje y (crucialmente) la función register_post_type() que es proporcionada por WordPress.

He usado películas como mi tipo de publicación aquí, ya que estoy creando un sitio de revisión de películas imaginarias. Tal vez quieras usar algo diferente.

Ahora, si guardas tu archivo y vuelves a tu sitio, verás que nada ha cambiado. Eso es porque no has activado tu código. El método que usamos para activar la función aquí es enganchándolo a un gancho de acción proporcionado por WordPress, el gancho de init. Cuando se utiliza una función proporcionada por WordPress (como register_post_type) se encuentra que hay un gancho que se debe utilizar. Puedes encontrar detalles en la entrada del manual de WordPress para registrar tipos de correo personalizados.

Así que añadamos el gancho. Bajo tu código, y fuera de las llaves, añades esta línea:

Usamos la función add_action() para enganchar nuestro código a un gancho de acción, con dos parámetros: el nombre del gancho de acción y el nombre de nuestra función.

Ahora intenta guardar tus archivos y vuelve a tu sitio. Verás que el tipo de mensaje personalizado se ha añadido a tu menú de administración.

custom post type in menu

¡Bien!

Ahora vamos a añadir una función extra, para registrar una taxonomía personalizada. Debajo del código que has escrito hasta ahora, añade esto:

De nuevo, puede que quieras cambiar el nombre de tu taxonomía personalizada. Aquí he hecho que la taxonomía se aplique al tipo de post que acabo de registrar (el tercer parámetro de la función register_taxonomy). Si le diste un nombre diferente a tu mensaje, asegúrate de editarlo.

Ahora guarda tu archivo y echa un vistazo a tus pantallas de administración. Cuando pase el cursor por encima de tu tipo de post en el menú de administración, verás la nueva taxonomía.

custom taxonomy in admin menu

Ahora tienes un plugin que funciona. ¡Bien hecho!

Echemos un vistazo a cómo podrías añadirlo.

3. Poner en cola las hojas de estilo y los guiones

Si necesitas usar estilos o scripts personalizados en tu plugin, puedes añadirlos directamente al archivo del plugin, pero eso no es la mejor práctica. En su lugar, deberías crear hojas de estilo y scripts como archivos separados en la carpeta del plugin y ponerlos en cola, usando una función proporcionada por WordPress.

Imaginemos que quieres agregarle estilo a tu tipo de post personalizada. Podrías añadirlo al tema, pero quizá quieras añadir algún estilo específico al plugin para que el tipo de publicación destaque sobre los demás tipos de publicaciones de cualquier tema.

Para ello, creas una nueva carpeta dentro de la carpeta de plugins llamada css (o estilos, depende de ti). Dentro de esa carpeta, crea una hoja de estilo llamada style.css, o puedes darle un nombre más específico para mayor claridad. Voy a llamar a la mía movies.css.

Entonces necesitas encolar ese archivo en tu plugin para que pueda ser usado por WordPress. Añade esto a tu archivo principal del plugin, encima de las funciones que ya tienes. Me gusta añadir la cola de espera e incluye primero en mi archivo de plugin para que pueda ver qué otros archivos se están activando.

Si guardas el archivo, no verás ninguna diferencia en las pantallas de administración, pero si has añadido entradas del tipo de entrada personalizada y tu hoja de estilo incluye el estilo para ellas, ahora lo verás en el front-end de tu sitio.

Nota que el gancho usado para poner en cola tanto las hojas de estilo como los scripts es el mismo: ambos usan wp_enqueue_scripts. No hay un gancho separado para los estilos.

El encolado de scripts funciona de manera muy similar. Sigue estos pasos:

  • Añade una carpeta de scripts o js a tu carpeta de plugins.
  • Guarda tus archivos de script en esa carpeta.
  • Pon en cola el script de la misma manera que la hoja de estilo anterior, reemplazando la función wp_enqueue_style() por wp_enqueue_script().

4. Uso de los archivos de inclusión

Otra opción al desarrollar el plugin es crear archivos PHP adicionales, conocidos como archivos de inclusión. Si tienes muchos de ellos, puedes crear varias carpetas para diferentes tipos de archivos de inclusión, o puedes crear una sola carpeta llamada "includes".

Hay algunas funciones que puedes utilizar para incluir archivos, que encontrarás en nuestra completa guía para incluir y requerir archivos.

Por ejemplo, en nuestro plugin de tipo post personalizado, podríamos crear algún código para variar la forma de salida del contenido de la página, usando el gancho de filtro the_content para modificar el código que se está ejecutando cada vez que el contenido se emite en una página de productos.

En lugar de añadir este código al archivo principal del plugin, podrías añadirlo a un archivo separado llamado movie-content.php y luego escribir el código en ese archivo para la forma en que el contenido se produce para las películas.

Para incluir este archivo en el plugin, se agrega una carpeta llamada includes al plugin y luego se agrega el archivo content-movie.php.

Para incluir ese archivo en tu plugin, añades este código al principio para el archivo principal del plugin:

No necesitas enganchar esto a una acción o a un gancho de filtro, solo usa la función include_once() en tu archivo de plugin. Eso entonces llamará al código del archivo de inclusión como si estuviera en tu archivo principal de plugin en ese momento.

Llevándolo más lejos: Características del plugin

En esta guía te he mostrado cómo se codifican los plugins y también te he mostrado cómo empezar a construir un simple plugin.

Una vez que le hayas cogido el tranquillo al desarrollo de plugins, podrás construir plugins más complejos y con más funciones para llevar a cabo tareas más complejas en tu sitio.

Veamos algunos ejemplos.

Plugins de Widget

Los plugins de widgets implican trabajar con las clases pero son una buena introducción al tema. Nuestra guía para crear un plugin de widgets te ayudará a hacerlo.

También puedes encontrar un montón de plugins de widgets en Code Canyon, que te ahorrarán tener que codificarlos tú mismo. En nuestro blog hemos identificado los mejores plugins de widgets para el 2020, los mejores widgets de Facebook y los mejores widgets de Twitter.

Code Canyon widget plugins

Plugins de código corto

Crear un código corto es un gran lugar para empezar a crear plugins ya que son relativamente simples y muy útiles. Averigua cómo crearlos con nuestra guía para codificar los códigos cortos en WordPress.

CodeCanyon también tiene un montón de útiles plugins de código corto que puedes usar para añadir funcionalidad extra a tu sitio.

Code Canyon shortcode plugins

Social Media Plugins

Los plugins de medios sociales son increíblemente populares ya que le permiten mostrar tu feed de Facebook, Twitter o Instagram en tu sitio y permite a tus visitantes compartir tu contenido a través de tus propias cuentas de redes sociales.

Code Canyon tiene docenas de plugins de redes sociales. Aprende sobre los mejores plugins de redes sociales y cómo crear una comunidad en línea para tu sitio de WordPress.

Galería y plugins de medios

Si quieres optimizar los medios de comunicación en tu sitio y mostrar galerías o fuentes de vídeo, un plugin hará que todo se vea más profesional. Averigua cómo encontrar los mejores plugins de galería para imágenes o vídeo y cómo codificar tu propio plugin de galería. O busca los plugins profesionales de galería y vídeo en Code Canyon.

media plugins on Code Canyon

Plugins de formularios

Añadir formularios a tu sitio permite a tus visitantes ponerse en contacto y ayuda a construir una relación. Code Canyon tiene un montón de plugins de formularios premium que facilitarán a tus visitantes contactarse contigo. Aprende a crear un formulario con el plugin QuForm más vendido.

Preguntas frecuentes

Aquí están las respuestas a algunas de las preguntas más frecuentes sobre los plugins de WordPress.

¿Por qué no puedo simplemente añadir el código que necesito a mi archivo de funciones del tema?

Es tentador simplemente seguir agregando código al archivo functions.php, y hay algún código que debería estar ahí.

Pero si tu código está relacionado con la funcionalidad de tu sitio, más que con el diseño o la salida del contenido, entonces deberías codificarlo en un plugin. Esto significa que si cambias de tema en el futuro, todavía tienes esa funcionalidad. Y puedes usar el plugin en otro sitio que tenga un tema diferente.

He añadido un código a mi plugin. ¿Por qué no pasa nada?

Esto es probablemente porque no has enganchado tu código a un gancho de acción o de filtro. Hasta que no lo hagas, no pasará nada.

Cuando edito mi plugin y reviso mi sitio, obtengo una pantalla blanca. ¡Ayuda!

Probablemente has añadido algún código que tiene un error en alguna parte. PHP es un lenguaje implacable y esto podría ser tan menor como un punto y coma en el lugar equivocado.

Intenta encender WP_DEBUG en tu archivo wp-config.php y verás un mensaje diciéndote dónde está el error. Entonces podrás arreglarlo.

Cuando activo mi plugin, recibo un mensaje de error que me dice que se han emitido demasiados encabezados. ¿Qué significa esto?

Todo lo que esto significa normalmente es que hay demasiadas líneas vacías en tu archivo de plugin. Vuelve y comprueba que no hay líneas vacías al principio del archivo.

Si eso no lo arregla, intenta encender el WP_DEBUG.

¿Dónde puedo encontrar más información sobre el desarrollo de plugins?

Tenemos muchos tutoriales y cursos que te ayudan a construir todo tipo de plugins aquí en Envato Tuts+. Mira si puedes encontrar algo que te inspire.

tutsplus plugins courses

¿Dónde puedo descargar los plugins para mi sitio?

Puedes elegir entre miles de plugins gratuitos en el directorio de plugins de WordPress. También puedes comprar plugins de terceros en CodeCanyon Siempre compra los plugins de un proveedor de confianza para asegurarte de que siguen los estándares de codificación de WordPress y no contienen código malicioso.

Resumen

Los plugins convertirán tu sitio de un simple blog en un poderoso sitio web que incluye características avanzadas y es seguro y robusto. Intenta añadir plugins a tu sitio hoy mismo y codifica los tuyos propios para ver cómo puedes usar los plugins para mejorar tu sitio de WordPress.

Los mejores temas y plugins de WordPress en el mercado de Envato

Explora miles de los mejores temas de WordPress creados en ThemeForest y los principales plugins de WordPress en CodeCanyon. Adquiere estos temas y plugins de WordPress de alta calidad y mejora la experiencia de tu sitio web para ti y tus visitantes.

Aquí están algunos de los temas y plugins de WordPress más vendidos y con más futuro disponibles para el año 2020.

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.