Partes dinámicas en wordpress con wp-cache
Ayer estuve haciendo unas modificaciones en mi plantilla para mantener unas partes de la página dinámicas a pesar de utilizar wp-cache.
En la documentación del wp-cache viene bien claro que se debe meter el código dinámico a ejecutar en un fichero a parte, y hacer un include en la plantilla entre los comentarios html “<!–mclude fichero.php–>” y “<!–/mclude–>”.
<!--mclude wp-content/themes/mitheme/archivo_codigo.php-->
include('wp-content/themes/mitheme/archivo_codigo.php');
<!--/mclude-->
El tema es que me encontré algunas dificultades. Por un lado el wp-cache sustituye los include() y require() por include_once() intentando supongo problemas de repetición en declaraciones de funciones, pero para mi propósito necesitaba incluir en distintas partes de la plantilla el mismo código, por lo que tuve que sustituir en el fichero wp-cache-phase2.php el include_once por include en la línea 149.
"<!--mclude-->\n<?php include_once('" . ABSPATH . "$1'); ?>\n<!--/mclude-->", $buffer);
por
"<!--mclude-->\n<?php include('" . ABSPATH . "$1'); ?>\n<!--/mclude-->", $buffer);
Por otro lado me encontre que el wp-cache es bastante tiquismiquis con el parseo de estas cosas, y hay que ser muy estricto al escribir los mclude.
- No puede haber espacios entre "<!–" y mclude, ni tras el nombre del fichero. Igual pasa al cerrar el mclude.
- El include() debe hacerse con comillas simples, con comillas dobles no funciona.
Así no funcionará:
<!-- mclude mifichero.php -->
include("mifichero.php");
<!-- /mclude -->
Así sí funcionará:
<!--mclude ruta/mifichero.php-->
include('ruta/mifichero.php');
<!--/mclude-->
El tema de ser estricto no es un problema, una vez lo sabes es facil de solucionar, pero el tema de sustituir los include por include_once no lo veo claro, creo que eso debe ser decisión del programador y no debe hacerse de forma automática, aunque quizá haya alguna razón que desconozco


