Reusando el header y footer de wordpress en aplicaciones externas
July 20, 2011
Luego de romperme la cabeza por algunas horas tratando de re-usar el header y el footer de wordpress de alguna forma dinámica que me permitiera reproducir y mantener sincronizado el diseño en aplicaciones externas, encontré una forma ideal para lograrlo.
El proceso es sencillo pero vas a requerir de acceso al shell para hacerlo. Al menos para preparar los scripts y el cron si lo vas a tener automático.
- Crea un directorio para guardar el script y los templates que necesitas. Yo los tengo fuera de mi document root.
/home/usr/headers
- Aqui dentro vas a crear varios archivos, cada uno de estos archivos va a incluir el archivo wp-blog-header.php de la raiz de tu instalacion de wordpress y tambien el header y el footer respectivamente del theme de tu wordpress: header-wrapper.php footer-wrapper.php
Ej.: header-wrapper.php <?php require('/home/usr/public_html/wp-blog-header.php'); include "/home/usr/public_html/wp-content/themes/name/header.php"; ?> Ej.: footer-wrapper.php <?php require('/home/usr/public_html/wp-blog-header.php'); include "/home/usr/public_html/wp-content/themes/name/footer.php"; ?>
- Ahora necesitamos un script que va a ejecutar los comandos: update_headers.sh
#!/bin/bash rm -rf header-wrapper.html && php header-wrapper.php > header-wrapper.html rm -rf footer-wrapper.html && php footer-wrapper.php > footer-wrapper.html
En esencia este script empieza borrando header-wrapper.html y footer-wrapper.html si ya existen. Luego usa php (en el cli) para ejecutar los archivos php que creamos en el paso anteior y los exporta a un archivo .html independiente para nuestro uso.
- Aplica permiso de ejecucion al script que creamos en el paso anterior.
chmod a+x update_headers.sh
- Ya solo nos queda ejecutar el script para generar los .html que usaremos en nuestra aplicación externa.
./update_headers.sh
- Ya con tus dos archivos en formato .html exportados puedes hacer con ellos lo que quieras. En mi caso, la aplicación donde los necesitaba usa Smarty. Con Smarty es muy sencillo incluir un archivo externo. Este es el comando:
{include file="/home/usr/headers/header-wrapper.html"}
Algunos pasos opcionales:
- Si quieres automatizar el proceso simplemente crea un cron job a la frecuencia que consideres ejecutando el script. De esta forma tu aplicación siempre estará en sincronismo con cualquier cambio que hagas a tus templates en wordpress.
- Para mi era importante hacer algunas modificaciones a los .html generados para tener una mejor integración. Esto lo hice haciendo uso de un paquete disponible en PEAR.
- Vamos a instalar el PEAR Package: File_SearchReplace
pear install File_SearchReplace
- crea un nuevo script para realizar los procesos: sr.php
<?php include 'File/SearchReplace.php' ; $files_to_search = array('header-wrapper.html','footer-wrapper.html'); $search_string = array('busqueda1', 'busqueda2'); $replace_string = array('reemplazo1', 'reemplazo2'); $snr = new File_SearchReplace($search_string, $replace_string, $files_to_search, '', // directorie(s) to search false) ; $snr->doSearch(); ?>
- Simplemente ingresa en los arreglos los valores que quieres buscar y sus respectivos reemplazos (ojo con el index de lo que busca y remplaza). También debes agregar en el arreglo los archivos a buscar.
- Agrega la ejecucion de este nuevo archivo a nuestro script original, ahora seria:
#!/bin/bash rm -rf header-wrapper.html && php header-wrapper.php > header-wrapper.html rm -rf footer-wrapper.html && php footer-wrapper.php > footer-wrapper.html php sr.php
- Listo, luego de generar los archivos .html el script buscara y reemplazara los cambios necesarios.
En mi caso yo estoy usando estos scripts para integrar el WHMCS con WordPress y mantener la visual en todo el website. He hecho algunos reemplazos que me interesaban y removido algunos códigos innecesarios usando el paquete de PEAR, me lo encuentro muy util.
Si encuentras algún uso creativo de estos scripts por favor déjame saber en un comentario.
Credito para algunas de las paginas que use de referencia:
- http://www.codediesel.com/php/search-replace-in-files-using-php/
- http://bloke.org/php/using-wordpress-header-and-footers-externally/
Saludos,
Jose R. Lopez