domingo, 16 de septiembre de 2012

Hoy en AyudaWordPress.com

Hoy en AyudaWordPress.com

Link to Ayuda WordPress

Límite de palabras en WordPress (II)

Posted: 16 Sep 2012 02:26 PM PDT

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.

Imagen de la pantalla de administración de WordPress

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.

Ayuda WordPress está alojado en Gigas Cloud WordPress ¿quieres probarlo gratis por un mes?, ¡corre que se acaba la promoción!

La hora en WordPress y cómo hacerla más legible: el clásico “Hace X días”

Posted: 14 Sep 2012 11:54 PM PDT

Últimamente cada vez veo más una bonita forma de expresar la fecha de creación de un post: ‘Hace X días’ o ‘hace X minutos’. Creo que además de ser más legible muestra una referencia del tiempo más cercana para el lector, que de un simple vistazo podrá apreciar si la web ha sido actualizada hoy mismo.

WordPress nos ofrece una función muy fácil de usar: human_time_diff ( $from, $to ). El primer parámetro, $from, es la fecha más lejana y el segundo, $to, es la fecha más cercana a hoy. WordPress calcula la diferencia de tiempo y devuelve directamente una cadena del estilo ‘X días’ o ‘X minutos’. Prácticamente no tenemos que hacer nada, excepto que dichas fechas tienen que estar en formato Unix.

Para hacerlo, el parámetro $from será la fecha de creación del post y el $to será la fecha actual. En el Códex viene bien explicado:

echo human_time_diff( get_the_time('U') , current_time('timestamp') );

get_the_time('U') obtiene la fecha de creación del post (tendremos que estar dentro del Loop para ejecutarla) en formato Unix y current_time('timestamp') la fecha actual también en formato Unix. Tal y como hemos dicho, esta sentencia devuelve una cadena de tipo ‘hace X días/minutos’.

Bueno, esto no está nada mal pero hagámoslo bien, bien. Para que todas las fechas en nuestra web salgan de esta manera usaremos el filtro the_time si en nuestras plantillas estamos usando la función the_time(). Si estamos mostrando las fechas mediante la función get_the_time(), usaremos el filtro get_the_time:

$time = human_time_diff( get_the_time('U') , current_time('timestamp') );  echo sprintf( __( 'hace %s', 'dominio' ), $time );

De esta forma, en todos nuestros posts aparecerá la fecha en el formato más legible.

En el código utilizo la función __() ya que es necesaria si luego quisiéramos traducir nuestro tema ( es una buenísima práctica y aconsejo hacerlo siempre, incluso si no vamos a traducirlo).

Ayuda WordPress está alojado en Gigas Cloud WordPress ¿quieres probarlo gratis por un mes?, ¡corre que se acaba la promoción!

No hay comentarios:

Publicar un comentario

Seguidores

Archivo del blog