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

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

Cómo redireccionar un dominio sin www a él mismo con www

En función de nuestras necesidades, ya sea por comodidad o por mejorar el posicionamiento SEO nuestra web (contenido duplicado), es conveniente redireccionar el dominio simple (sin www) a un dominio con las www. Ya sé que existen mucha gente que prefiere no utilizar las www y otra que incluso odia esta manera de acceder a ellos.

No voy a entrar a discusión de si es mejor o peor, voy a plantear las dos posibilidades, dirigir de un dominio sin www al mismo con www y al revés.

Para hacerlo, ya sea usando WordPress, cualquier otro gestor de contenidos o sin ninguno, bastará con editar (o crear primero si éste no existe) un fichero .htaccess en la raíz del directorio. Si nuestro servidor es remoto podemos acceder por FTP o por Cpanel, ambas opciones son bastante conocidas. Así, abrimos o creamos este fichero y añadimos el siguiente contenido:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^linuxhispano\.net$ [NC]
RewriteRule ^(.*)$ https://www.linuxhispano.net/$1 [R=301,L]

Leer más » 5 Comentarios

Obtener una lista de las categorías de una entrada en WordPress

Gracias a la API de WordPress es extremadamente sencillo obtener un listado de categorías de una entrada en concreto. Para ello, dentro de un fichero de tipo single.php, es decir, en una entrada en particular, ejecutamos la función get_the_category() y obtenemos un listado de objetos categoría que podremos usar a nuestro antojo.

Veamos cómo listarlos directamente:

foreach((get_the_category()) as $category) { 
    echo $category->cat_ID . ' - ' . $category->cat_name . '<br/>'

Como podéis ver $category es un objeto de tipo taxonomía que tiene los siguientes atributos:

Leer más » 1 Comentario

WordPress 3.4 “Green”: personalización de temas, integración de Twitter y mucho más

Si estáis suscritos a la distribución de WordPress, habréis recibido un correo de Matt anunciando lo que ya comenté anoche en Twitter:

Y aquí lo pongo para mostraros una de las muchas novedades (la inclusión automática de tweets con sólo poner el vínculo) y virtudes de este nuevo WordPress 3.4 “Green” llamado así en honor a Grant Green, otro grande del jazz como siempre pasa en WordPress.

Las novedades no se quedan ahí y os recomiendo hacer dos cosas para comprobarlas:

  • Actualizar cuanto antes y ver la nota que aparece al volver a iniciar sesión
  • Ver este vídeo que aunque está en inglés, es breve y muy gráfico:

Leer más » 3 Comentarios