Insertar código PHP en entradas, páginas o widgets de WordPress

Si eres programador PHP de la vieja escuela y estás empezando a construir sitios web en WordPress, seguramente echarás de menos alguno de tus recursos y funciones en PHP que no puedes incluir directamente en una entrada o página de WordPress, ya que estas solo permiten incluir código HTML, CSS o Javascript que son ejecutados directamente en el navegador web.

¿Podemos insertar código PHP de alguna forma?

Pues si, incluyéndolo en un archivo aparte y llamándolo mediante un shortcode. Los shorcodes son funciones de WordPress que permiten ejecutar determinado código o función con una simple llamada a su nombre especificado entre corchetes, por ejemplo [nombre_función].

Así que para hacer esta prueba vamos crear un directorio llamado “scripts” en la carpeta raíz del tema que estamos usando y añadimos un archivo llamado suma.php donde vamos a incluir un código sencillo simplemente para comprobar que se procesa correctamente por WordPress. El código va a resolver una suma sencilla:

Ahora vamos al archivo functions.php de nuestro tema y añadimos al final el siguiente código para crear el shortcode e indicarle dónde se encuentra el código PHP a ejecutar:

Donde ‘sumaphp’ es el nombre que hemos dado al shortcode. En la función lo único que hacemos es indicar en qué ruta está el archivo suma.php con el código.

Ahora nos dirigimos a cualquier entrada o página de WordPress y añadimos el shortcode tal cual:

Y vemos el resultado en pantalla:

Con esto vemos cómo hemos podido ejecutar una simple función PHP dentro del contenido de una entrada o página de WordPress.

Espero que os haya sido de utilidad, y hasta el próximo post 😉

4 Comentarios

  1. Hola.

    Interesante y funcional el artículo, sin embargo y como estoy comenzando con WordPress y PHP, voy leyendo mucho al respecto, encontrándome informaciones acerca de que, todo cambio efectuado en el archivo functions.php se perderá, cuando el tema se actualice. En el mismo archivo mencionado, incluso hay una nota que lo confirma. Entonces, ¿de qué sirve hacer scripts si luego podrían desaparecer?

    Cordiales saludos.
    Antonio F.S.

    1. Hola Antonio F.S. Efectivamente, cualquier cambio que se hace en el functions.php, al actualizar el theme se perderá.
      Para que esto no suceda existen las plantillas hijas o child themes. Un Child Theme digamos que es un tema que tú creas heredando todas las propiedades del tema principal (o tema padre). En este tema hijo es donde se llevan a cabo todas las modificaciones a nivel de CSS y scripts, para que cuando el tema principal se actualice, no se pierdan los cambios.

      Te dejo el enlace donde lo explico con más detalle en un artículo anterior: https://www.gestionatuweb.net/crea-un-tema-hijo-child-theme-a-partir-de-un-tema-principal-en-wordpress/

      Un saludo.

  2. Gracias amigo, ha sido tan sencillo y práctico tu tutorial que me ha dejado anonadado, había estado mirando otros y sinceramente no los podia entender y no me funcionaban.

    Con el que has puesto aqui funcionó a la primera!

    Ahora voy a continuar viendo el que pones que habla de CHILD.
    Saludos.

Responder

XHTML: Puedes usar esas etiquetas: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Contacta con Gestionatuweb
 
×

Utilizamos cookies para mejorar la experiencia de uso y obtener datos estadísticos de nuestras visitas. Si no aceptas las condiciones algunos apartados de la web podrían no funcionar correctamente. Más información

Los ajustes de cookies de esta web están configurados para "permitir cookies" y así ofrecerte la mejor experiencia de navegación posible. Si sigues utilizando esta web sin cambiar tus ajustes de cookies o haces clic en "Aceptar" estarás dando tu consentimiento a esto.

Cerrar