Para ejecutar código php dentro de WordPress he encontrado dos métodos. Uno es llamar al código a través de la url completa a partir de donde esté el código de llamada. Dicho código se ejecutará en una nueva pestaña sin problemas.
El problema surge cuando tienes un código que funciona por separado de WordPress y quieres aparezca dentro del envoltorio de WordPress. Para ello basta hacer una página wordpress que llame a un shortcode. Por cierto recomiendo el plugins Code Snippets para ello. Dicha página accede al código a través de un slug (url amiga) que construye el sistema.
Así, por ejemplo, un código que se encuentra en:
components/com_etapas/transferencia_recorridos/transfiere_recorridos.php al final se accede a él con el slug:
transferencia_de_recorridos que deberá ir en alguna página que solo contenga esto tal cual, con corchetes incluidos: [transferencia_de_recorridos].
Poniendo la página en un menú, ésta hecha a andar como http://servidor/transferencia_de_recorridos
el problema surge si el código php vuelve a llamarse así mismo con el paso de parámetros o si recurre a funciones javascript que utilizan location.href o iframes que precisan de un src=’……..’ o cuando tienen sentencias include.
Empecemos enumerando diferencias: Estamos suponiendo que queremos ver el componente en el envoltorio, bien en una nueva pestaña o en el iframe que muestra el centro de la plantilla.
- Llamada al código puro php (nueva pestaña) o al slug (en el envoltorio) desde menu.js que se encuentra en /modules/mis_menus
“2,true,Transferir Recorridos,../../components/com_etapas/transferencia_recorridos/transferir_recorridos.php”,
La línea anterior debería ser sustituida por esta otra:
“2,true,Transferir Recorridos ,../../transferencia_de_recorridos”,
lo de ../../ es para retroceder al raíz.
No olvidemos que el slug transferencia_de_recorridos equivale a components/com_etapas/transferencia_recorridos/transfiere_recorridos.php.
A partir de este momento, el de querer usar el slug de la página, todo parece como si nos encontrásemos en wp-include y siempre tuviéramos que poner
../ para llegar al raíz y buscar lo que necesitemos.- javascript funcionando para llamadas a en código nativo php o a través del slug
/* ————— B L O Q U E J A V A S C R I P T ——————- */
function controla()
{deberes=document.datos.hacer.value; //transferir / eliminar
inicio=document.datos.cbo_inicio.value; // fecha del recorrido inicial
final=document.datos.cbo_final.value; // fecha del recorrido final
nuevo_inicio=document.datos.nuevo_inicio.value;
if (deberes==’transferir’)
{document.getElementById(“marco_oculto”).src=”inserta_recorridos.php?inicio=” + inicio +”&final=”+ final +”&nuevo_inicio=”+ nuevo_inicio;
}
if (deberes==’eliminar’)
{texto=”¿Estás seguro de querer eliminar los recorridosr comprendidos entre “+inicio+” y “+final+”?r Se borrarán definitivamente.”;
respuesta=confirm(texto);
if (respuesta==true)
{document.getElementById(“marco_oculto”).src=”elimina_recorridos.php?inicio=” + inicio +”&final=”+ final;}
else {return false;}
}
return false;
}// finaliza la funcion html controlafunction cambia_temporada(cbotemporada)
{nuevatemporada=cbotemporada.value;
location.href=”transfiere_recorridos.php?temporada=” + nuevatemporada + “&tarea=ir_transferir”;
} // finaliza la funcion html cambia temporada</script>V E R S U S
<script language=”javascript”>
/* ————— B L O Q U E J A V A S C R I P T ——————- */
function controla()
{deberes=document.datos.hacer.value; //transferir / eliminar
inicio=document.datos.cbo_inicio.value; // fecha del recorrido inicial
final=document.datos.cbo_final.value; // fecha del recorrido final
nuevo_inicio=document.datos.nuevo_inicio.value;
if (deberes==’transferir’)
{document.getElementById(“marco_oculto”).src=”../components/com_etapas/transferencia_recorridos/inserta_recorridos.php?inicio=” + inicio +”&final=”+ final +”&nuevo_inicio=”+ nuevo_inicio;
}if (deberes==’eliminar’)
{texto=”¿Estás seguro de querer eliminar los recorridosr comprendidos entre “+inicio+” y “+final+”?r Se borrarán definitivamente.”;
respuesta=confirm(texto);
if (respuesta==true)
{document.getElementById(“marco_oculto”).src=”../components/com_etapas/transferencia_recorridos/elimina_recorridos.php?inicio=” + inicio +”&final=”+ final;}
else {return false;}
}
return false;
}// finaliza la funcion html controlafunction cambia_temporada(cbotemporada)
{nuevatemporada=cbotemporada.value;
// deberes=document.datos.hacer.value;
//alert (deberes);location.href=”?temporada=” + nuevatemporada + “&tarea=ir_transferir”;
} // finaliza la funcion html cambia temporada</script>
- javascript funcionando para llamadas a en código nativo php o a través del slug
- Botonaduras
Hay cuatro botones que se muestran dos a dos según se quiera insertar o eliminar
echo ‘ <input type=”submit” style=”display:’.$transferir.'” value=”TRANSFERIR” title=”Transferir recorridos” alt=”Transferir recorridos”onclick=”javascript:hacer.value=’transferir'” >’;
echo ‘ <input type=”submit” style=”display:’.$eliminar.'” value=”ELIMINAR” title=”Eliminar recorridos” alt=”Eliminar recorridos” onclick=”javascript:hacer.value=’eliminar'”>’;
echo ‘ <input type=”button” style=”display:’.$ir_transferir.'” value=”IR A TRANSFERIR” title=”Pantalla de transferir recorridos” alt=”Pantalla de transferir recorridos” onclick=”javascript:location.href=’transfiere_recorridos.php?tarea=ir_transferir&temporada=’.$elegida.””>’;
echo ‘ <input type=”button” style=”display:’.$ir_eliminar.'” value=”IR A ELIMINAR” title=”Borrar recorridos” alt=”Borrar recorridos” onclick=”javascript:location.href=’transfiere_recorridos.php?tarea=ir_eliminar&temporada=’.$elegida.””>’;V E R S U Secho ‘ <input type=”submit” style=”display:’.$transferir.'” value=”TRANSFERIR” title=”Transferir recorridos” alt=”Transferir recorridos”onclick=”javascript:hacer.value=’transferir'” >’;
echo ‘ <input type=”submit” style=”display:’.$eliminar.'” value=”ELIMINAR” title=”Eliminar recorridos” alt=”Eliminar recorridos” onclick=”javascript:hacer.value=’eliminar'”>’;
echo ‘ <input type=”button” style=”display:’.$ir_transferir.'” value=”IR A TRANSFERIR” title=”Pantalla de transferir recorridos” alt=”Pantalla de transferir recorridos” onclick=”javascript:location.href=’../transferencia_de_recorridos?tarea=ir_transferir&temporada=’.$elegida.””>’;
echo ‘ <input type=”button” style=”display:’.$ir_eliminar.'” value=”IR A ELIMINAR” title=”Borrar recorridos” alt=”Borrar recorridos” onclick=”javascript:location.href=’../transferencia_de_recorridos?tarea=ir_eliminar&temporada=’.$elegida.””>’;