Guía 78 – Integrar en WordPress, versión 2

Hace 3 años y medio que hice el artículo de integración con WordPress.

Hace muy poco un desarrollador preguntó en el Foro de Xlinesoft que deseaba hacer un sistema para el usuario final, donde quería tener la funcionalidad de un CMS (como WordPress, Drupal, etc.) pero a su vez publicar información de un sistema PHPRunner y le dirigí a este artículo.

Comprobé que el plugin de WordPress que recomendaba (WP DATA ACCESS) había evolucionado muchísimo, pero la funcionalidad FREE la habían recortado por lo que ya no parecía tan interesante.

También, porque un desarrollador de España había comprado (a Xlinesoft)  el Template de WordPress y no encontraba forma de  hacerle funcionar,  estuve ayudándole.  Revisé esta solución compleja por disponer de funciones más amplias que las habituales de publicación de información y de  ahí mi conocimiento de la solución.

Con esta información estuve pensando que lo mejor era contar con un plugin del tipo «shortcode» de WP e inyectar la página creada en la aplicación PHPRunner en el punto de la página de WP y así inicie mis prueba.

Para hacer esta inyección de página he utilizado el plugin de WordPress «simple embed code» que todo lo que habría que hacer, una vez instado el plugin es insertar, en la página, una cadena del tipo «{{https://fhumanes.com/wp-elecciones/page_5_dashboard.php?iframe=y}} para que en el sitio se inyecte el contenido de esa URL.

Sin hacer nada, la página se ve, pero se mezclan los estilos de WordPress con los de la aplicación PHPRunner y queda francamente mal. Visto el problema, la solución la orienté a modificar el plugin de WP y en filtrar y cambiar el fichero de estilo de la aplicación de PHPRunner. Esto funcionaba a medias, ya que la primera página como iba por ese «proxy» se hacía el cambio, pero para el resto de peticiones, que van directamente a la aplicación no se hacía el cambio y seguía con el problema.

Objetivo

Insertar contenidos de páginas de aplicación realizada con PHPRunner en una web realizada con WordPress.

Solución Técnica

Como he comentado en WordPress he utilizado el plugin «simple embed code«. La funcionalidad es muy simple y hay muchos otros que pueden hacer lo mismo.

Puesto que la aplicación de PHPRunner tiene que saber cuándo la petición llega desde WP o directamente, se ha añadido el parámetro a la URL de «iframe=y«, para indicar:

  • Que la página que envíe no debe tener menú vertical, menú horizontal en el TOP de la página.
  • Que debe enviar un fichero de estilos (CSS) que no «choque» con la hoja de estilo de WordPress.

Para adecuar la página, he hecho lo que explique en la primera versión de este artículo, es decir:

  • En evento “after application initialized” incluir el código:
    if(isset($_GET['iframe']) AND $_GET['iframe'] !== '' )
    {   $_SESSION['iframe'] = $_GET['iframe']; }
  • En todas las tablas y presentaciones en donde queramos quitar estos bloques tendremos que incluir este código en el evento “Before display”:
    include "MyCode/use_iframe.php";

    El código de ese fichero es:

    <?php
    if($_SESSION['iframe']=='y') {
       $xt->assign("left_block", false);     // Turn off Menú left
       $xt->assign("supertop_block", false); // Turn off Menú top
    }

Para cambiar el fichero de la hoja de estilo he utilizado este algoritmo:

  • En el mismo directorio de donde se está tomando la hoja de estilo de Bootstrap, dejo el fichero modificado que llamo «style_wp.css». Para saber el directorio hay que ver el fuente de la página y en la sección «head» están los ficheros de estilo y en concreto el de Bootstrap.
  • Cuando se accede a la aplicación se comprueba si existe el fichero «style_wp.css» y si existe se copia el fichero «style.ccs» a «style_save.css» y el fichero «style_wp.css» a «style_wp_save.css» y se elimina el fichero «style_wp.css» para que nunca más se haga esta parte.
  • A partir de ese momento, si «iframe=y» se envía el fichero «style_wp_save.css» y en caso contrario se envía «style_save.css».Este es el código para este algoritmo “after application initialized”:
    // Para inficar que no queremos Cabeceras
    if(isset($_GET['iframe']) AND $_GET['iframe'] !== '' )
    {   
      $_SESSION['iframe'] = $_GET['iframe']; 
    }
    
    // Control de qué fichero de estilo se requiere (Normal o el que necesitamos para WordPress)
    $fileStylePath = __DIR__."/.."."/styles/bootstrap/cerulean/small/";
    
    if (file_exists($fileStylePath."style_wp.css")) { // Es la primera vez que se ejecuta
        unlink($fileStylePath."style_wp_save.css"); // Elimina los ficheros de copia
        unlink($fileStylePath."style_save.css");
        // Crea los ficheros de copia
        copy($fileStylePath."style.css",$fileStylePath."style_save.css");
        copy($fileStylePath."style_wp.css",$fileStylePath."style_wp_save.css");
        unlink($fileStylePath."style_wp.css");
    }
    $fileSizeOrigin = filesize($fileStylePath."style.css");
    $fileSizeWP     = filesize($fileStylePath."style_wp_save.css");
    
    if (isset($_SESSION['iframe']) && $_SESSION['iframe'] == 'y' && $fileSizeOrigin <> $fileSizeWP ) { // Hay que poner el fichero de WP
        copy($fileStylePath."style_wp_save.css", $fileStylePath."style.css");
    }
    if ($_SESSION['iframe'] <> 'y' && $fileSizeOrigin == $fileSizeWP ) { // Hay que poner el fichero de NORMAL
        copy($fileStylePath."style_save.css",$fileStylePath."style.css");
    }

    Aquí el resultado del ejemplo:

Master

Displaying 1 - 7 of 7
Id Text Date Memo Check Lookup
1 test 1 3/6/2024

Lorem Ipsum es simplemente el texto de relleno de las imprentas y archivos de te

More ...
code_005
2 test2 -new 3/7/2024

¿Por qué lo usamos?:heart:

Es un hecho establecido hace demasiado tiempo que un lector

More ...
code_007
3 test 3 3/6/2024

Lorem Ipsum es simplemente el texto de relleno de las imprentas y archivos de te

More ...
code_002
4 test 5 3/6/2024
code_001
5 test 6 3/6/2024

Lorem Ipsum es simplemente el texto de relleno de las imprentas y archivos de te

More ...
code_006
6 test 4 3/6/2024

Lorem Ipsum es simplemente el texto de relleno de las imprentas y archivos de te

More ...
code_004
7 Test en Producción 3/8/2024

Lorem Ipsum es simplemente el texto de relleno de las imprentas y archivos de te

More ...
code_008

En el fichero de estilos «style_wp.css», podéis observarlo y veréis que los cambios del original tiene una línea de comentario:

/*  CHANGE FHUMANES */

Al principio del fichero está lo que he añadido y entre medias, lo que he comentado del fichero original.

Observaciones de uso de esta solución
  • No puedes poner, en la misma página, varios shortcode de este tipo. Aunque sea de la misma o de otra aplicación PHPRunner.
  • La aplicación de PHPRunner tiene que indicarse que se genere (opciones de página LIST) utilizando Ajax. Todo lo que no utilice Ajax no funcionará en esta solución.
  • Se utiliza la fuente y el tamaño de la fuente del CSS de WordPress. Si quieres que tu aplicación tenga la fuente un tamaño particular (por defecto es 16px y se ve bien con 14px), tienes que especificarlo en PHPRunner.

En el desarrollo del ejemplo he utilizado el Plugin de PHPRunner «Summernote».

Diferentes artículos de integración con WordPress

Desde la publicación del primer artículo han trascurrido 3 años y medio y PHPRunner ha avanzado mucho, por lo que he vuelto a estudiar esta problemática y he publicado este conjunto de artículos que creo necesitáis leer antes de tomar una decisión.

Os dejo la aplicación de PHPRunner, para que podáis apreciar los detalles.

Adjuntos

Archivo Tamaño de archivo Descargas
zip PHPRunner 10.91 96 KB 179

Blog personal para facilitar soporte gratuito a usuarios de React y PHPRunner