El Loop de WordPress: entendiendo la diferencia entre query_posts y WP_Query

Si hay algo importante en un sitio WordPress es el loop. Para programar sitios basados en WordPress debemos tener muy en cuenta los métodos que nos proporciona: query_posts y WP_Query, ¿qué diferencias tiene? ¿Cuándo debemos usar cada una?

Resumiendo

La función query_posts está pensada para modificar el loop de la página principal. La idea de esta función no es crear loops secundarios. Si lo que queremos es crear loop secundarios, deberemos usar objetos WP_Query. Usar query_posts en loop secundarios puede darnos como resultado comportamiento erróneos que muestren cosas que no queremos.

Loop de WordPress

¿Pero qué es el loop principal y qué son los loop secundarios?

Vamos a explicar detalladamente estos dos conceptos, para qué sirven y en qué situaciones hacen falta.

Leer más » 2 Comentarios

Evitar entradas duplicadas en el loop de WordPress

Por motivos que pueden tener que ver con filtros o mala utilización de las consultas personalizadas para loops, es posible que en alguna ocasión suframos un problema: aparece contenido duplicado en nuestro blog o sitio realizado en WordPress.

Para evitar este problema, crearemos un array con los identificadores de las entradas, de forma que sepamos cuáles han sido ya mostradas en el loop actual y así evitar que se muestren dos veces. Tened en cuenta que las entradas están identificadas con su respectivo número entero que es su clave primaria, el identificador.

Veamos directamente el código:

Leer más » 1 Comentario

Paginación en WordPress no funciona

En alguna ocasión me he encontrado con algún cliente o un tema en un proyecto propio en el que los botones de paginación no funcionan, incluso usando paginación al estilo WP Page Navi. El problema es que siempre se presenta la primera página sea cuál sea la página que se pida (podemos ver la página que se pide en la URL: /page/2 o /page/3…).

Probablemente no sea un problema de WordPress sino un problema de vuestro tema que no trata las variables de paginación. ¿Cómo podemos verlo? Dirigiros a vuestro index.php o al fichero en el que esté implementado el loop.

  1. Buscad la zona donde se forme la consulta (WP_Query)
  2. Comprobad en sus parámetros si se trata la página, sería algo así: &paged=’ . $paged
  3. En caso de que no se trate la variable, ahí tenéis el problema, si se trata tenéis que comprobar que la variable paged está siendo declarada y correctamente recogida de la URL: $paged = (get_query_var(‘paged’)) ? get_query_var(‘paged’) : 1;

El código a buscar sería el que se encuentra alrededor de WP_Query y debería modificarse para que quedara como se indica a continuación:

Leer más » 2 Comentarios

“Could not create the index.html file” en tinthumb.php

Logo Timthumbtimthumb es un pequeño script PHP que nos permite de forma simple mediante parámetros GET, redimensionar, recortar o hacer zoom sobre imágenes. Por esta utilidad, ha sido usado ampliamente en temas WordPress y en otros muchos sitios. Aunque tiene cierta fama por su seguridad (por sus fallos, a priori todos ya resueltos), su uso conlleva alguna problemática de vez en cuando.

Uno de los errores que pueden aparecernos es el que ilustra el título de esta entrada: “Could not create the index.html file” y que puede aparecer sólo o en compañía de otros errores típicos que en otra ocasión trataremos. read more

Leer más » 1 Comentario

Fatal error: Allowed memory size of N bytes exhausted en PHP

Uno de los mayores problemas de usar WordPress, es que a pesar de ser un sistema bastante ligero, llega un momento en el que como no tengamos cuidado, puede llegar a ocupar muchos recursos. De cómo aligerar WordPress, he hablado y hablaré (de forma presencial por cierto en la próxima WordPress Meetup Córdoba que es ya mismo) pero esta no es la idea de esta entrada.

La idea de esta entrada es: no puedo aligerar WordPress por cualquier razón (no hay más que aligerar, falta de tiempo…) y el espacio que direcciona de memoria RAM se ha agotado. El indicativo de este problema es un mensaje que dice lo siguiente:

Fatal error: Allowed memory size of N bytes exhausted en PHP

La solución, intentar ampliar la memoria que tenemos disponible para PHP y por lo tanto para WordPress. ¿Cómo? Iremos intentando cada una de estas acciones.

Dentro de php.ini

Si tienes acceso al php.ini global o en su defecto, tienes un php.ini disponible en tu cuenta compartida, busca la línea:

memory_limit = 32M;

Y sustitúyela por esta otra:

memory_limit = 64M;

Leer más » 3 Comentarios

Comprobar si un botón radio está seleccionado y cuál seleccionado dentro de un grupo con jQuery

Comprobar si un botón radio está seleccionado con jQuery

Será tan simple como hacer un selector que nos lleve al elemento, vamos a usar el identificador directamente para el ejemplo, y usar la función is() con el argumento checked. Veamos:

$('#mielemento').is(':checked');

Devolverá true o false. Es útil para obtener datos en un formulario.

¿Qué elemento radio está seleccionado dentro de un grupo?

Si lo que queremos es seleccionar directamente al elemento dentro de un grupo que está elegido haremos lo siguiente:

$("input[name='grupo']:checked").val();

Esta sentencia nos devolverá qué elemento dentro del grupo está seleccionado. Recordad que para agrupar botones de este tipo, en HTML usamos el atributo name.

Ejemplo de uso

Os dejo un ejemplo de cómo se manejan los botones radio en HTML que siempre viene bien recordarlo:

Leer más » 4 Comentarios

Cambiar la dirección URL del inicio de sesión en WordPress

Si estamos usando WordPress como CMS en un desarrollo, querremos personalizar en la medida de lo posible al máximo cosas básicas como son la administración del sitio y relacionado con esto: la URL de acceso.

Por costumbre usando otros CMS o por intentar familiarizar más el acceso al inicio de sesión, es una buena idea cambiar wp-admin o wp-login.php por algo más sencillo como administracion. Por ejemplo: http://www.miempresa.com/administracion es mucho más intuitivo para un cliente que http://www.miempresa.com/wp-login.php.

Tenemos dos formas de hacerlo.

Con el fichero .htaccess

La idea es incluir la redirección dentro del fichero, sólo debemos incluir la siguiente línea:

Leer más » 10 Comentarios

Obtener datos de usuarios en WordPress

Comencemos averiguando los datos del usuario que ha iniciado sesión en WordPress tiene una serie de datos asociados, que pueden sernos de utilidad a la hora de crear o modificar plugins o temas. De cara a poder obtener sus datos, usamos la función get_currentuserinfo() que rellenará los datos de la variable global $current_user.

Veamos un ejemplo de uso que es autoexplicativo:

global $current_user;
get_currentuserinfo();

echo 'Nombre de usuario: ' . $current_user->user_login . "<br/>";
echo 'Correo electrónico: ' . $current_user->user_email . "<br/>";
echo 'Nombre: ' . $current_user->user_firstname . "<br/>";
echo 'Apellidos: ' . $current_user->user_lastname . "<br/>";
echo 'Nombre que se muestra: ' . $current_user->display_name . "<br/>;
echo 'Identificador: ' . $current_user->ID ;

Leer más » 2 Comentarios

Nuevos elementos en HTML5

Hace ya un tiempo, redacté una entrada que tuvo bastante éxito sobre los elementos que desaparecerán en breve de HTML. Muy relacionada con ésta os traigo esta nueva entrega, que podría ser la cara inversa a la anterior: Nuevos elementos en HTML5. Comencemos.

<article>

En español artículo. Se usa para definir de forma independiente, contenido autónomo. Puede ser contenido especificado de forma independiente del resto del sitio. Puede representar una tema de un foro, un artículo de un periódico o una entrada de un blog entre otros.

<aside>

Esta etiqueta se usa para identificar contenido aparte del contenido en el que se enmarca, pero con el que está relacionado. Veamos un ejemplo:

Leer más » 2 Comentarios

Buscar un elemento por su contenido con jQuery

Los selectores de jQuery son una herramienta potente y flexible como pocas en el desarrollo web. Su sintaxis basada en CSS facilita enormemente la labor, hacer todo a base de document.getElementById es muy duro. Sin embargo hay veces que queremos elegir elementos no por su identificador, ni por su clase, ni por su nombre, ni siquiera por un atributo que hayamos rellenado aparte, sino por su contenido.

Para esta labor tenemos el selector :contains. Veamos ejemplos que es la mejor forma de aprender su uso. Tened en cuenta sólo una cosa, :contains nos devolverá todos los elementos cuyo texto interno contiene en alguna parte la cadena que le pasemos. Otro detalle a tener en cuenta: sí es sensible a mayúsculas.

Veamos:

  • $(‘:contains(“Mi texto”)’): reconocerá cualquier elemento del texto que incluya en alguna parte “Mi texto”, respetando mayúsculas y minúsculas.
Leer más » 2 Comentarios

Enlaces permanentes o pretty permalinks con htaccess y Apache

El posicionamiento en buscadores y la progresiva imposición del ecosistema web en el día a día del software, ha obligado a todos los que desarrollamos aplicaciones en la nube,  a cuidar la forma en que aparecen las URL, el producto de esta tendencia son los llamados pretty permalinks. Direcciones que identifican de forma unívoca a contenido y que además en lugar de tener parámetros, tienen una cadena entendible para los humanos.

¿En qué tecnología nos podemos apoyar para llevarlos a cabo? Podemos usar nuestro lenguaje del lado del servidor o directamente también podemos usar a nuestro servidor web. Explicaré en esta entrada cómo hacer enlaces permanentes vistosos usando Apache y .htaccess. Siempre hará falta conocer algo sobre expresiones regulares o patrones. El requisito técnico es que además del servidor web, tengas instalado mod_rewrite.

Objetivo

El ejemplo que vamos a desarrollar convertirá peticiones del tipo http://misitio.com/mipaginahttp://misitio.com/mipagina.php, para que podáis tener:

  • http://misitio.com/contacto usando http://misitio.com/contacto.php
  • http://misitio.com/sobre-mi usando http://misitio.com/sobre-mi.php

¿Útil no?

Código

Este es el código del fichero .htaccess:

Leer más » 2 Comentarios

Modificar apariencia en NetBeans (Look and Feel)

Cansado de usar NetBeans con apariencia GTK con el tema Ambiance de Ubuntu, que básicamente no me permitía diferenciar los botones de la barra de herramientas y menú superior con claridad, he optado por modificar la apariencia (Look and Feel, laf) del susodicho IDE de Java.

Para hacerlo no tenéis más que modificar el fichero de configuración de NetBeans, éste se encuentra en el lugar dónde hicierais la instalación, por ejemplo en mi caso hice la instalación con el instalador oficial (aquí tenéis la forma de hacerlo) y para editar la configuración:

ahornero@6581-D:~$ sudo nano /usr/local/netbeans-7.1.2/etc/netbeans.conf

Leer más » 3 Comentarios

¿Cómo usar fotos de Gravatar en tu sistema?

Gravatar, abreviación de globally recognized avatar en inglés (o avatar reconocido globalmente, en español) es un servicio que ofrece un avatar único globalmente y que es usado por WordPress, tanto en su rama de CMS como en su rama de servicio de blogs gratuitos (WordPress.com).

Gravatar

Es un servicio que ofrece una identidad única, fue creado por Tom Werner y podemos usarlo de forma gratuita y sin restricciones en nuestros desarrollos para ofrecérselo a nuestros usuarios. ¿Cómo?

Gravatar identifica cada usuario mediante su cuenta de correo electrónico y nos ofrece la posibilidad de recuperar dichas imágenes, los gravatar, mediante una URL, que tiene la siguiente forma:

http://www.gravatar.com/avatar/HASH

Siendo HASH el cálculo MD5 de la dirección de correo electrónico del usuario. Por ejemplo, mi gravatar sería:

Leer más » 2 Comentarios

Arrays asociativos en PHP: crear, editar, añadir, eliminar, extraer y eliminar elementos

Los arrays asociativos en PHP, son una de las herramientas más útiles para manejar información. A diferente de los arrays secuenciales, equivalentes a los vectores de C, el acceso no se hace al elemento iésimo, si no que lo hacemos a una clave, al estilo de las tablas hash.

Veamos un ejemplo con personas a las que se les referencia a través de su NIF. Como podéis imaginar, el acceso a través de ese dato es inmediato.

Creación

La creación es inmediata, nos limitamos a llamar a la función array seguida de los parámetros que serán sus elementos. Escribimos los elementos con esta forma: “clave” => “valor”.

 $personas = array('30303030A' => 'Javier Carazo', 
'31313131B' => 'Francisco Gil');

Añadir o editar elementos

Para añadir elementos no necesitaremos otra cosa que hacer una asignación, es decir, ni siquiera deberemos indicar que el elemento es nuevo. Será la misma operación la de añadir y la de editar.

Leer más » 5 Comentarios

Limpia un título de caracteres conflictivos con WordPress para convertirlo en una URL

Los enlaces permanentes o pretty permalinks son una bonita forma de hacer que el título de las entradas pase a una URL sin afectar al formato de éstas. De igual forma, si estamos trabajando en un sistema que requiera tratamiento de ficheros y subida/bajada de éstos, debemos también atender a este problema de convertir títulos con multitud de símbolos en URL válidas y que no introduzca caracteres como los %20 en lugar de los espacios en blanco.

Os traigo una función, que viene incluida dentro de WordPresssanitize_title_with_dashes(), que hace justo eso mismo y que os puede ser muy útil desarrollando cualquier tema o plugin. Para el caso concreto de nombres de ficheros tenemos sanitize_file_name( $filename ) que hace eso mismo pero con nombres de fichero.

¿Qué hace la función?

Limpia el título, reemplazando espacios en blancos y otros caracteres conflictivos por guiones. Devuelve el título equivalente, usando sólo caracteres alfanuméricos, barras bajas y guiones.

Leer más » 1 Comentario