La semana pasada, en concreto, el día 10 de Septiembre, Fernando publicó un artículo comentando un problema del que al menos yo, hasta la fecha no he visto la solución en la red. Me estoy refiriendo a la dificultad que surge cuando tienes la necesidad de publicar, bien un post o una página de WordPress con muchas palabras ( desconozco cual es le límite exacto de palabras, pero creo que tampoco tiene la mayor relevancia).
Inicialmente a mi me apareció el problema en mi blog http://vercrucerosbaratos.com ( que por cierto agradezco vuestra visita, pues eso me anima a seguir metiendo horas en su desarrollo),pues tenía que colocar mucho texto en una página, y cuando la previsualizaba, la página en cuestión me aparecía en blanco, no encontré solución, y al final me incliné por dividirla en varias secciones, y consecuentemente en varias páginas.
Pero posteriormente, me volvió a surgir el tema anterior, en otro de mis blogs, el que contiene información de la Ley Orgánica de Protección de Datos (LOPD), y que podéis visitar en http://lopd-agpd.com/ , donde como antes estaré encantado de recibiros. En esta ocasión, el problema no lo podía resolver partiendo la información en varias páginas, pues se trata de un Real Decreto que desarrolla la LOPD, y además contiene al principio un índice para poder navegar fácilmente por esa disposición normativa, con lo que el texto aunque extenso, tenía que estar por completo en una sola página.
Busque por Internet, y encontré las soluciones que apunta Fernando en su artículo, pero no me servían, incluso, la tercera solución, la de cambiar en el fichero PHP.INI, las siguientes variables «pcre.recursion_limit=20000000, y pcre.backtrack_limit=10000000«, tampoco me servía para visualizar la página (lo probé en local, con una instalación limpia de WordPress).
Pensé que el problema residía en el campo denominado «post_content» de la tabla de la base de datos llamada «wp_posts» que WordPress utiliza para almacenar la información de cada página o post, y en concreto en alguna limitación de almacenamiento en el mismo, pero ahí tampoco encontré la respuesta final, aunque eso sí una pista, que aún no me ha llevado a la solución del problema. En concreto, el campo donde se almacena la información («post_content» )es de tipo longtext, que si lo buscamos en la ayuda de Mysql, puede contener un texto con un máximo de caracteres 4.294.967.295 caracteres, ahora bien se matiza que «Hay que tener en cuenta que debido a los protocolos de comunicación los paquetes pueden tener un máximo de 16 Mb«, con lo que por ahí puede venir el problema real, aunque yo personalmente y hasta la fecha, como he comentado antes, no he encontrado la solución. Pero, de una forma indirecta, conseguí obtener el resultado que buscaba, a continuación os lo cuento.
La página en cuestión la podéis ver pinchando en este enlace, para conseguirlo creé un fichero con extensión php, que lo llamé grande.php, con todo el código html, del contenido de la página. Después lo deposité en la carpeta del Theme que estoy utilizando ( en mi caso el path sería wp-content/themes/responsive/ , siendo «responsive» el Theme que utilizo ).
A continuación, tomo una «plantilla de página» ( pinchar aquí para ver lo que es una plantilla de página ) de las que tiene el Theme con el que trabajo y que presente un formato acorde a lo que quiero presentar, y hago una copia del mismo. En mi caso lo he llamado «ful-width-page-bis.php» que es una copia de la plantilla que viene con el Theme responisve y que se denomina «ful-width-page.php» ( me interesaba una página sin sidebar laterales y anchura completa, sobre todo para aprovechar al máximo la pantalla debido al gran contenido que hay que colocar).
Al comienzo de la copia he cambiado el Template Name a «Pagina grande sin sidebar» (es lo que aparece en la página de administración de WordPress, en la parte de atributos de página-plantilla en la parte derecha de la misma, obteniendo un encabezado como el siguiente:
/** * Full Content Template * Template Name: Pagina grande sin sidebar * * @file full-width-page.php * @package Responsive * @author Emil Uzelac * @copyright 2003 - 2011 ThemeID * @license license.txt * @version Release: 1.0 * @filesource wp-content/themes/responsive/full-width-page.php * @link http://codex.wordpress.org/Theme_Development#Pages_.28page.php.29 * @since available since Release 1.0 */
Después en el mismo fichero de la plantilla, y a continuación de la expresión:
<?php while (have_posts()) : the_post(); ?>
Es decir, en lo que se denomina The loop en WordPress, he puesto la siguiente expresión:
<?php include(TEMPLATEPATH . '/grande.php'); ?>
Es decir le digo, que incluya el fichero grande.php que he creado anteriormente y que contiene todo el código HTML que voy a presentar. La constante TEMPLATEPATH, pertenece a WordPress y equivale al camino hasta el Theme que estemos usando.
Después no nos queda más que crear una página, con contenido vacío, pero utilizando como plantilla, la que hemos creado, tal y como os he comentado anteriormente, y ya tendremos el resultado deseado. Para clarificar, os pongo a continuación una imagen de como sería la pantalla de administración, y con una flecha indicando la parte donde se selecciona la página de plantilla.
Perdón por la extensión del post, pero creo que el resultado final merecía la pena, y espero que a más de uno le resuelva este problema si algún día se topa con él.
¿Te gustó este artículo? ¡Ni te imaginas lo que te estás perdiendo en YouTube!
Una solución extrema pero que al final de cuenta logra su cometido. Hablando de páginas en blanco, no se si sea mi caso pero hay momentos en que mi web se queda en blanco, sin embargo presionando la tecla escape puedo detener la carga y mostrarse correctamente. Ahora si bien es cierto que este problema se deriva de publicar contenido extenso, no es mi caso, ya que el contenido normal que publico no ocupa ni la quinta parte de tu ejemplo, por ser sobre todo pequeñas reseñas o sinopsis de series o revistas.