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