Advertisement
  1. Code
  2. Creative Coding

Plantillas de plugins dentro de WordPress

Scroll to top
Read Time: 6 min

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

Cuando se trata de crear un Tipo de Entrada Personalizada dentro de un plugin de WordPress, siempre encontramos el mismo problema: necesitas crear un archivo personalizado single-[cpt_slug].php en tu carpeta de temas si no quieres usar el archivo single.php predeterminado de tu tema.

En este artículo me gustaría cubrir dos aspectos del uso de plantillas personalizadas. El primer paso es mostrar que podemos usar un archivo personalizado contenido directamente en el propio plugin en lugar de cargar el archivo single.php predeterminado, y el segundo es cómo crear tu propio archivo personalizado en tu carpeta de temas.

Muchos plugins como Easy Digital Downloads o Shopp, utilizan este método: el plugin comprueba si has definido una plantilla personalizada en tu carpeta de temas y, si es el caso, se carga el archivo, de lo contrario se carga el archivo de plantilla de plugin predeterminado. En ninguno de los dos casos se carga el archivo single.php predeterminado del tema.


Definir el plugin y su estructura

El primer paso es crear un plugin, vamos a llamarlo "Template Chooser". Crea una carpeta "template-chooser" en /wp-content/plugins/, con la siguiente estructura:

template_chooser_structureLa estructura del plugin

A continuación, abre el archivo principal template-choose.php y coloca el siguiente código de encabezado del plugin:


Definir las constantes del plugin

Más adelante en el plugin tendremos que recuperar fácilmente la URL del plugin y su ruta, y por eso que necesitamos definir algunas constantes:


Registrar un tipo de entrada personalizada

Para ir más allá, tenemos que configurar un nuevo tipo de entrada personalizada, vamos a crear un CPT "Testimonial", con algunos soportes y características muy básicas. Como el objetivo del artículo no consiste en enseñar a crear un tipo de entrada personalizada, usaré un código bastante simple dividido en 3 partes: las etiquetas del tipo de entrada personalizada, los soportes y los argumentos de tipo de entrada personalizada. Todo esto se incrusta en una sola función:


No usar el archivo single.php predeterminado

Ahora que nuestro tipo de entrada personalizada está registrada, necesitamos crear una función que le diga a WordPress que no use el archivo single.php predeterminado del tema.

Porque sí, por defecto, al mostrar un tipo de entrada personalizada en el front-end WordPress comprobarás si existe un archivo llamado single-testimonial.php y lo cargará. Si no, buscará el archivo single.php. Pero no queremos usar ninguno de ellos.

Queremos que WordPress cargue un archivo personalizado desde el plugin. Para ello, tenemos que enganchar una nueva función al filtro "template_include". En esta función el objetivo es comprobar el tipo de entrada y actuar en consecuencia:


Cargar la plantilla correcta

Como puedes ver, en la línea 33 estamos llamando a una nueva función rc_tc_get_template_hierarchy(). Esta es la función que comprobará si WordPress tiene que cargar el archivo personalizado desde el plugin o la plantilla desde la carpeta del tema.

Ten en cuenta que cuando estoy hablando de la "plantilla de la carpeta del tema", estoy hablando de la carga de un archivo personalizado en lugar del single.php.

Digamos que no quieres cargar la plantilla incluida en el plugin sino crear tu propia plantilla personalizada, todo lo que tienes que hacer es crear una nueva carpeta en la carpeta del tema, denomínala "plugin_template" y dentro de esta carpeta crear un archivo single.php. Este será tu nuevo archivo single.php predeterminado que se cargará sólo para los testimonios que se muestran en el front-end.

¿Me sigues? Bien, vamos a crear la función:


La plantilla predeterminada del plugin

Ahora crea un nuevo testimonio desde el área de administración. Después abre includes/templates/single.php y luego copia y pega este sencillo código:

Si visualizas el testimonio en el frontend deberías ver el "we are in the plugin custom file" (estamos en el archivo personalizado del plugin). Eso es lo que queríamos. Pero si el archivo de plantilla de plugin no se ajusta a tus necesidades o si simplemente deseas crear un diseño más personal, puede crear un archivo en tu carpeta de temas.


La plantilla predeterminada del tema

Para crear una plantilla personalizada que no utilice la predeterminada del plugin, puedes crear una nueva carpeta llamada "plugin_templates" en tu carpeta de temas. Crea un nuevo archivo llamado single.php y coloca este código:


Conclusión

Entonces, ¿qué hicimos exactamente? Bueno, hemos creado un plugin que registra un tipo de entrada personalizada denominada "Testimonial". Logramos crear una funcionalidad que carga un archivo personalizado almacenado en la carpeta del plugin en lugar de los archivos predeterminados single.php o single-testimonial.php de la carpeta del tema. También logramos cargar un archivo personalizado en su lugar desde la carpeta de temas ubicado en "plugin_templates".

¿Por qué es genial? Porque cuando creas tu propio plugin puedes proporcionar una plantilla predeterminada para mostrar el tipo de entrada personalizada de manera que estás proporcionando al usuario final la opción de usar o no su propia plantilla.

Advertisement
Did you find this post useful?
Want a weekly email summary?
Subscribe below and we’ll send you a weekly email summary of all new Code tutorials. Never miss out on learning about the next big thing.
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.