Cómo mostrar la barra lateral de WordPress en sitios web que no son de WordPress
Mientras trabajaba en mi último proyecto, DevGrow Discussions, encontré la necesidad de incrustar toda la barra lateral de WordPress en un sitio que no sea de WordPress - específicamente un bbPress foro. Ya que utilizo varios widgets para mostrar publicaciones populares y otro contenido dinámico, no basta con copiar y pegar el HTML. Al final, hay solo dos formas de hacer esto:
- Incluir su wp-load.php archivo en su aplicación y, en efecto, cargue la totalidad de WordPress para obtener acceso a las funciones del complemento
- Use el almacenamiento en caché simple para almacenar la barra lateral en formato HTML e incluirlo en cualquier otra aplicación, luego reconstrúyalo cuando sea necesario cuando se publique nuevo contenido
Si no es lo suficientemente obvio, la primera opción es muy costosa en términos de consultas de base de datos y puede ralentizar significativamente su sitio. La segunda opción requiere un poco de esfuerzo en la implementación, pero el rendimiento es que no hay competencia.
Caché de tu barra lateral de WordPress
Antes de que podamos escribir nuestra función, debemos entender exactamente lo que estamos tratando de hacer. Nuestro objetivo es cachear nuestra barra lateral a un archivo de texto y Actualizar ese caché cada vez que publiquemos una publicación., Cambia nuestro tema o haz cambios en los widgets de la barra lateral. Ya que estamos planeando usar nuestro caché para mostrar la barra lateral en una aplicación diferente, debemos poder eliminar fácilmente el caché sin ningún efecto negativo (no queremos que nuestra barra lateral se rompa en ningún momento).
Para lograr esto de manera eficiente, nosotros también crear un registro de nuestros archivos en caché y usar eso para determinar si el caché debe ser borrado. Si es así, el archivo de caché real se sobrescribirá la próxima vez que alguien visite el sitio de WordPress, asegurando que siempre se presente una barra lateral adecuada en ambas aplicaciones.
Creando las funciones
Para empezar, abre tus temas funciones.php Archivo y añadir las siguientes funciones a ella:
función caché ($ task, $ cacheFile, $ cacheTime = 21600) global $ cache; // Configurar archivos y directorios: $ cacheDir = TEMPLATEPATH. "/ Cache"; $ cacheFileName = $ cacheDir. "/ cache- $ cacheFile.txt"; $ cacheLogFile = $ cacheDir. "/ cache-log.txt"; // Hacer el directorio del caché si no existe si (! Is_dir ($ cacheDir)) mkdir ($ cacheDir, 0755); // Haga un registro de los archivos de caché con su estado actual si (file_exists ($ cacheLogFile)) $ cacheLog = unserialize (file_get_contents ($ cacheLogFile)); else $ cacheLog = array (); if ($ task == 'start') // Si existe el caché, tiene menos de 6 horas y no está en la cola de eliminación, guárdelo; de lo contrario, reconstruya el caché si (file_exists ($ cacheFileName) && (time () - filemtime ($ cacheFileName)) < $cacheTime && $cacheLog[$cacheFile] == 1) $cache = false; else $cache = true; ob_start(); elseif($task == 'end' && $cache) // If caching, save file contents and update log file_put_contents($cacheFileName,ob_get_contents()); ob_end_flush(); $cacheLog[$cacheFile] = 1; file_put_contents($cacheLogFile,serialize($cacheLog)); elseif($task == 'purge') // Set cache to delete and update log $cacheLog[$cacheFile] = 0; file_put_contents($cacheLogFile,serialize($cacheLog)); function cache_purge() $cacheDir = TEMPLATEPATH."/cache"; $cacheLogFile = $cacheDir."/cache-log.txt"; if(file_exists($cacheLogFile)) $cacheLog = unserialize(file_get_contents($cacheLogFile)); else $cacheLog = array(); foreach($cacheLog as $key=>$ valor) $ cacheLog [$ clave] = 0; file_put_contents ($ cacheLogFile, serialize ($ cacheLog));
Estas primeras funciones, cache, Es la clave para que nuestro caché funcione. Dependiendo de la ubicación de su archivo, la función configurará los archivos y directorios correctos, verificará la necesidad de crear una memoria caché y, de ser así, guardará la salida y actualizará el registro de la memoria caché. La función utiliza el búfer de salida de PHP para guardar cualquier HTML generado en un archivo de texto.
La segunda función se usa para purgar todos los archivos de caché y es útil para agregar a los ganchos de WordPress existentes. Con él, podemos hacer que nuestra memoria caché se borre cada vez que se actualice nuestro tema, se guarde una publicación o se actualicen los widgets de nuestra barra lateral agregando lo siguiente al final de funciones.php:
add_action ('switch_theme', 'cache_purge', 10); add_action ('publish_post', 'cache_purge', 10); add_filter ('widget_update_callback', 'cache_purge', 10);
Para obtener una lista completa de enlaces, consulte la Referencia de la API del complemento de WordPress.
Configurando su barra lateral
Ahora que tiene las funciones listas, puede comenzar a almacenar en caché la barra lateral. Abre tu barra lateral.php y agregue esta línea al principio del archivo:
Esta función comenzará a almacenar en caché la barra lateral que necesita, de lo contrario no hará nada. Debido a la forma en que funciona la función de búfer de salida de PHP, también necesitamos cerrar el búfer al final del archivo. Agregue esta línea al final del mismo archivo:
Después de haber agregado esas dos líneas, actualice su blog. No verás nada en tu navegador pero revisa la /cache directorio en su carpeta de temas y debería ver dos archivos que comienzan con cache-.
Usando tu caché
Ahora que ha creado su archivo de caché, puede usarlo en cualquier aplicación que tenga acceso a él. Puedes hacerlo fácilmente usando el include_once Funciona pero también me gusta asegurarme de que el archivo exista, solo para estar seguro:
Sólo asegúrese de volver a comprobar que la ruta de su archivo es correcta. Si desea configurar su caché para eliminar de una aplicación externa, deberá incluir el cache_purge Funciona en tu script en algún lugar y simplemente llama a eso cuando sea necesario. Después de eso es simplemente una cuestión de llamar a la función:
Conclusión
Esta técnica es realmente útil para cualquier aplicación PHP, especialmente cuando desea mostrar contenido dinámico sin tener que sacrificar el rendimiento. Úselo para acelerar su instalación de WordPress o para poder usar bits útiles (como la barra lateral) en cualquier otro sitio web o aplicación.
Nota del editor: Esta publicación está escrita por Monjurul Dolon para Hongkiat.com. Monjurul es un diseñador de interfaces y desarrollador web basado en la Ciudad de Nueva York, que trabaja de manera independiente en su vida. Él bloguea en DevGrow.com, donde comparte consejos y recursos sobre desarrollo y diseño web..