Cando desenvolves un plugin, pódeche facer falta executar unha determinada acción asociada a un URL no noso WordPress. Imaxinemos que necesitamos ter un URL deste estilo

https://www.misitioweb.com/accion/?parametro=miparametro1

para, por exemplo, actualizar certos elementos da base de datos, enviar un e-mail, mostrar certa información, descargar un documento, etc. e queremos que isto chame a un arquivo php que esta nos cartafoles que conteñen o noso plugin..

A solución inmediata sería crear unha páxina coas ferramentas de backend de creación de páxinas de WordPress. O que fariamos seria crear esta páxina co slug https://www.misitioweb.com/accion e asociarlle unha plantilla de WordPress no seguinte widget da zona de administración

Widget asociar plantillas de WordPress

Lembremos que para facer unha plantilla simplemente temos que crear un arquivo php e indicar na cabeceira do mesmo o nome da plantilla xunto co texto que o identifica como unha plantilla “Template Name“. Este arquivo php debémolo gardar no cartafol do noso tema ou mellor en noso tema fillo. Algo similar ao que pomos aquí:

 

Este “Nombre_plantilla” será o que temos que escoller na lista desplegable “Plantilla” que mostrabamos no widget anterior.

Desta forma xa estaría solucionado o problema que comentabamos ao principio. Ao cargar o URL

https://www.misitioweb.com/accion/?parametro=miparametro1

executaríase o código e a acción que teñamos definida en noso arquivo php. Comentar que poño un só parámetro no URL pero poderían indicarse varios ou ningún, neste caso o importante é a “acción“. Ata aquí nada novo.

No caso do plugin esta solución non me servía porque quería ter todo o código, e por tanto tamén este arquivo php, encapsulado no plugin de forma que o código non estivese repartido no propio tema que estaba a usar, parecíame que quedaba un pouco feo.

Neste caso non podía usar a mesma estratexia ou polo menos de forma idéntica. Os templates de WordPress deben estar situados no cartafol do noso tema principal ou tema fillo, así que se puña o template no cartafol do plugin non me ía a funcionar.

Despois de mergullar por Internet e ler unha chea de documentación, atopei unha solución usando os filtros de WordPress. Non se se será a mellor, pero pareceume adecuada para o que quería e permitíame ter separado o código do plugin do código do tema.

A idea era usar o filtro Page_template que permite cargar un template personalizado para unha páxina determinada. Con isto podía indicarlle a WordPress que ao chamar a esta URL

https://www.misitioweb.com/accion

cargase o template que eu quixese e na localización que eu quixese, que era o importante. Ademais, o código deste filtro incluíao no arquivo principal do meu plugin co que non tiña que tocar o arquivo functions.php do tema principal.

Neste caso, o código que hei incluído no meu arquivo principal do plugin é o seguinte:

 

Imos debullar este código. Primeiro comprobo se a páxina da que veño é a correcta e ten ese slug. Hai que substituír “acción” polo nome da páxina que corresponda e que creei previamente.

Aquí hai que indicar que, no caso da solución para o plugin, do mesmo xeito que expliquei para o caso normal, hai que crear no meu WordPress unha páxina baleira co nome/slug “acción” para poder usar esa URL na chamada e que WordPress recoñézaa. Sen isto non vai funcionar.

Unha vez que comprobamos que é a páxina correcta, obtemos a ruta ao meu suposto template no directorio do plugin. Digamos que estou a substituír o template por defecto da páxina do tema polo arquivo php que me interesa executar no cartafol do meu plugin. Con isto xa estaría listo. Bo, espero que vos sirva de axuda e se atopades algunha forma mellor de facelo estarei encantado de coñecela.

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.plugin cookies

ACEPTAR
Aviso de cookies