• Saltar a la navegación principal
  • Saltar al contenido principal

Dani Sánchez - Gestionatuweb

Desarrollador web freelance

  • Quién soy
  • ¿Eres agencia?
  • WordPress
    • Mantenimiento WordPress
    • Desarrollo WordPress
    • Soporte técnico WordPress
  • Cursos
  • Blog
  • Portfolio
  • Solicita Presupuesto

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

El 11 de septiembre de 2017 por dani 14 comentarios

Aviso: Esta entrada tiene 2 o más años, es posible que el método difiera ligeramente, las capturas de pantalla no se correspondan con la versión actual o que la herramienta/complemento ya no esté disponible.
Advertencia: Esta entrada contiene códigos o snippets que podrían no funcionar correctamente en tu instalación de WordPress, o podrían ser incompatibles con tu theme o plugins activos. Úsalos bajo tu responsabilidad, preferiblemente en un entorno de desarrollo y haz siempre copias de tus archivos antes de modificarlos.

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:

<?php
$num1 = 100;
$num2 = 50;
$resultado = $num1 + $num2;
echo "El resultado es: " . $resultado;
?>

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:

function codigoPHP ($atts){ 
include (TEMPLATEPATH .”/scripts/suma.php”); 
}
add_shortcode (‘sumaphp’, ‘codigoPHP’);

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:

[sumaphp]

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 😉

Archivado en: Publicaciones, Tutoriales, WordPress Etiquetado como: desarrollo web, php, programación web, publicaciones, wordpress

Interacciones con los lectores

Comentarios

  1. canorioss dice

    21 de marzo de 2021 a las 00:54

    *Corrección*
    Sí funciona en WP 5.7… solo que en plantillas hijas hay que colocar los archivos php en la carpeta de la plantilla madre…

    Responder
  2. canorioss dice

    21 de marzo de 2021 a las 00:08

    No funciona en WP 5.7 🙁

    Responder
  3. RODOLFO SEALES POSADA dice

    28 de enero de 2021 a las 21:42

    Hola Daniel y compañeros. como estan? bueno, en busqueda de informacion llegue a este lugar y me gustaria saber un poco mas de el tema y lo que estoy buscando… quiero saber si es posible en una pagina de wordpress aparte de poder publicar un shortcode se pueda aplicar una logica de programacion incluyendo codigos con shortcodes. ejemplo: yo deseo hacer una especie de plugin con estos shortcodes de un plugin de affiliatewp (https://clickstudio.com.au/docs/multi-level-affiliates/developers/)
    y aqui aplicar una logica asignando los shortcode a unas variables y si esos valores pueden conservarse en esas variables. cual es la mejor forma de hacerlo? creen que pueden ayudarme con esto? aqui aparecen las funciones https://clickstudio.com.au/docs/multi-level-affiliates/developers/functions/
    quedo atento

    Responder
  4. jose dice

    13 de septiembre de 2020 a las 03:41

    tiene que ser obligatorio crear el archivo dentro de la carpeta donde esta el tema? como se haría si esta en public_html/carpeta/inicio.php ???

    Responder
    • dani dice

      14 de septiembre de 2020 a las 08:41

      Tendrás que navegar por FTP o a través del sistema de archivos de tu hosting hasta la ruta donde se encuentre tu plantilla, que siempre va a estar en wp-content/themes.

      Un saludo.

      Responder
  5. Ernesto dice

    15 de abril de 2020 a las 20:49

    Hola, gracias por el tutorial, pero ya existen plugins que permiten insertar PHP directamente en las páginas de WordPress, este es uno de ellos https://es.wordpress.org/plugins/insert-php-code-snippet/

    Responder
  6. Maria dice

    29 de febrero de 2020 a las 17:57

    Buenas tardes Daniel me parecio genial la posibilidad de insertar php y usar el gestor de contenido al mismo tiempo, he creado el directorio script en la raiz del child theme, generé el archivo suma.php dentro de la carpeta script pegue el codigo e hice lo propio en el funtion pero cuando inserto el shortcode en un bloque de elementor por ejemplo solo me sale {sumaphp] y no se que es lo que estoy haciendo mal, estaria genial que esto funcionase porque en verdad extraño todo lo que puedo hacer con php 🙁

    Responder
  7. Sergio dice

    5 de septiembre de 2019 a las 19:34

    Hola Daniel. Gracias por tu aporte. Es una buena base para crear tu propio plugin.
    He definido el shorcode en un plugin y funciona muy bien pero en la página de edición de la página donde inserto el shortcode también se muestra el resultado, ¿cómo solucionar esto?
    Gracias otra vez

    Responder
    • Daniel, Gestionatuweb.net dice

      6 de septiembre de 2019 a las 08:48

      Hola Sergio, la página de edición es a través de algún constructor visual tipo Elementor? En este tipo de constructores es posible ver el resultado directamente en el modo edición, pero con el editor clásico de WordPress no debería aparecer, o al menos a mí no me aparece.

      Saludos.

      Responder
      • Sergio dice

        8 de septiembre de 2019 a las 07:58

        Hola Daniel. Muchas gracias por responder tan rápido.
        La cuestión es que el ‘echo’ también lo hace en el backend, aunque no se ve porque está oculto por la barra lateral de administrador.
        He encontrado un código que me ha funcionado. He creado un plugin con el siguiente código:

        ‘suma’ ), $params));
        ob_start();
        include( dirname(__FILE__). «/$file.php»);
        return ob_get_clean();
        }

        add_shortcode( ‘phpinclude’, ‘codigoPHP’ );

        El archivo suma.php está guardado en la misma carpeta del plugin.
        Espero que te ayude. Tu artículo me ayudado a mí. Gracias

        Fuente: https://www.sitepoint.com/how-to-develop-a-php-file-include-plugin-for-wordpress/

        Responder
  8. Agencia seo dice

    23 de agosto de 2018 a las 06:17

    Estoy haciendo esto pero cuando ejecuto la web que tiene el php me parece solo el shortcode y no ejecuta el codigo, a que se puede deber esto?

    Responder
  9. Ernesto dice

    3 de julio de 2018 a las 19:24

    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
  10. Antonio F.S. dice

    26 de diciembre de 2017 a las 10:38

    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.

    Responder
    • Daniel, Gestionatuweb dice

      27 de diciembre de 2017 a las 09:12

      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.

      Responder

Deja una respuesta Cancelar la respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Acepto la política de privacidad

Hosting recomendado

Raiola Networks

Autor

Dani Sánchez
Dani Sánchez
@danisanchez82

Entradas recientes

  • Optimizar el archivo de configuración de WordPress (wp-config.php)
  • ¿Qué plugins tengo instalados en mi web en 2022?
  • Tu alojamiento web no es compatible con la rotación de imágenes. [Solución]
  • Instalar LAMP en Manjaro (Linux, Apache, MySQL y PHP)
  • Instalar LAMP (Linux, Apache, MySQL y PHP) en Fedora 34

Comentarios recientes

  1. Armando en Instalar LAMP (Linux, Apache, MySQL y PHP) en Fedora 34
  2. Vito en Configurar en español los campos tipo fecha (date) en Ninja Forms
  3. Manel en Calcular rutas con OpenStreetMap partiendo de la geolocalización del usuario
  4. Leo en Modificar textos predefinidos de WordPress sin editar la traducción
  5. Alejo en Instalar LAMP en Manjaro (Linux, Apache, MySQL y PHP)

Categorías

  • Actualidad
  • Afiliación AliExpress
  • Agent Press Pro
  • Bettaso Web Restaurantes
  • Cursos
  • Destacado
  • Divi
  • Drupal
  • Elementor
  • Genesis
  • Iniciación a PHP
  • Joomla!
  • Linux
  • Publicaciones
  • Tutoriales
  • WooCommerce
  • WordPress

Divi 20% descuento

Hosting Recomendado

Raiola Networks
Banner

Sitios web corporativos, blogs y tiendas online cuidando hasta el mínimo detalle

Si deseas proponerme un proyecto web ponte en contacto conmigo.

Contacto

Gestionatuweb © 2022 · Desarrollado con Genesis · Acceder
Política de privacidad · Política de cookies

En Gestionatuweb.net utilizamos cookies técnicas para el correcto funcionamiento del sitio. Además, utilizamos cookies para obtener datos estadísticos sobre el uso de la web, con el fin de mejorar la experiencia de navegación y conocer qué contenidos son los más consultados. Otras cookies son usadas para servicios adicionales, como conexión con redes sociales, marketing o mostrar publicidad acorde a tus gustos. Puedes desactivar todas las cookies (excepto las técnicas) pulsando en Rechazar, o elegir qué cookies admites y cuales no en el botón de Preferencias. Más información sobre las cookies que utilizamos en nuestra: Política de cookies.

Gestor de cookies:  GDPR Cookie Compliance
Resumen de uso de cookies

En Gestionatuweb.net utilizamos cookies técnicas para el correcto funcionamiento del sitio. Además, utilizamos cookies para obtener datos estadísticos sobre el uso de la web, con el fin de mejorar la experiencia de navegación y conocer qué contenidos son los más consultados. Otras cookies son usadas para servicios adicionales, como conexión con redes sociales, marketing o mostrar publicidad acorde con tus intereses. Puedes desactivar todas las cookies (excepto las técnicas) pulsando en Rechazar, o elegir qué cookies admites y cuales no en el botón de Preferencias.

Cookies técnicas (necesarias)

Las cookies estrictamente necesarias tiene que activarse siempre para que podamos guardar tus preferencias de ajustes de cookies. Estas cookies son:

  • moove_gdpr_popup: Comprueba si debe mostrar o no el aviso de cookies (si ya ha sido aceptado o rechazado no se vuelve a mostrar mientras persista esta cookie). Expira en 1 año.
  • cpnb_cookiesSettings: Comprueba qué categorías de cookies se aceptan o rechazan (por ejemplo, cookies analíticas, cookies de publicidad dirigida, etc.). Expira en 1 año.
  • _GRECAPTCHA: Esta web utiliza el servicio reCAPTCHA para fortalecer la seguridad en los formularios y evitar el envío masivo de SPAM. reCAPTCHA utiliza esta cookie necesaria para realizar su análisis de riesgo. Expira en 6 meses.

Si desactivas esta cookie no podremos guardar tus preferencias. Esto significa que cada vez que visites esta web tendrás que activar o desactivar las cookies de nuevo.

Cookies de analítica

Utilizamos Google Analytics para recopilar información anónima tal como el número de visitantes del sitio, o las páginas más populares. Dejando estas cookies activas nos permite mejorar nuestra web.

  • _ga: Analítica de Google. Se usa para distinguir a los usuarios. Expira en 2 años.
  • _gid: Se usa para distinguir a los usuarios. Expira en 24 horas.
  • _gat: Se usa para limitar el porcentaje de solicitudes. Expira en 1 minuto.

¡Por favor, activa primero las cookies estrictamente necesarias para que podamos guardar tus preferencias!

Cookies de publicidad

Utilizamos Google Adsense para mostrar publicidad en los artículos del blog acordes a tus intereses. Esta publicidad nos ayuda al mantenimiento del sitio web y del tiempo dedicado a la redacción del blog.

  • _gads: Publicidad de Google Adsense. Proporciona la publicación de anuncios de interés para el usuario. Expira en 13 meses.

¡Por favor, activa primero las cookies estrictamente necesarias para que podamos guardar tus preferencias!

Política de cookies

Más información sobre nuestra política de cookies