Entradas relacionadas con miniatura sin plugins

guru del código

Las entradas relacionadas son un modo estupendo de atraer a tus lectores hacia otras publicaciones de temática similar, aumentando la fidelidad y permanencia en tu web de los visitantes, así que es un elemento fundamental y casi obligatorio en cualquier sitio.

Si le sumamos una atractiva miniatura de imagen que le de mayor visibilidad a las entradas relacionadas mejor que mejor ¿no?

Pues bien, cómo ya hemos visto en otras ocasiones cómo mostrar entradas relacionadas con código, o uno de los mejores plugins para mostrar entradas relacionadas con miniatura, hoy rizamos el rizo y unimos ambas posibilidades.

posts-relacionados-con-miniatura

Para mostrar entradas relacionadas con miniatura sin plugins hay 3 pasos fundamentales, a saber … 

1. Añadir soporte de miniaturas al tema

Esto ya lo hemos visto varias veces pero lo repasamos por si no lo has añadido ya. Para ello añade al fichero functions.php de tu tema la siguiente línea, con la que le añadimos soporte de miniaturas de entrada:

add_theme_support( 'post-thumbnails' );

Y además, siempre es conveniente definir los tamaños de miniatura adaptados lo mejor posible al diseño:

add_theme_support( 'post-thumbnails' );
set_post_thumbnail_size( 100, 50, true );

A partir de ahí solo tienes que acordarte de que en cada entrada definas una “Imagen destacada” desde la “meta box” del editor así denominada.
imagen destacada

2. Añadir el código al loop

En el loop del archivo single.php debemos añadir el código que mostrará las entradas relacionadas. El sitio ideal sería antes de la llamada a los comentarios, que identificarás por el siguiente código:

<?php comments_template(); ?>

El código sería algo así:

<div class="relacionadas">
<h3>Entradas relacionadas</h3>
<?php
        $orig_post = $post;
        global $post;
        $tags = wp_get_post_tags($post->ID);
        
        if ($tags) {
        $tag_ids = array();
        foreach($tags as $individual_tag) $tag_ids[] = $individual_tag->term_id;
        $args=array(
        'tag__in' => $tag_ids,
        'post__not_in' => array($post->ID),
        'posts_per_page'=>4, // Número de entradas relacionadas a mostrar.
        'caller_get_posts'=>1
        );
        
        $my_query = new wp_query( $args );

        while( $my_query->have_posts() ) {
        $my_query->the_post();
        ?>
        
        <div class="miniaturarelacionada">
                <a rel="external" href="<? the_permalink()?>"><?php the_post_thumbnail(array(150,100)); ?><br />
                <?php the_title(); ?>
                </a>
        </div>
        
        <? }
        }
        $post = $orig_post;
        wp_reset_query();
        ?>
</div>

Básicamente, lo que hace el código anterior es identificar las tags en que está etiquetada la entrada actual para, a continuación, mostrar otras entradas etiquetadas con las mismas tags, excluyendo la entrada actual, que identifica por su ID único. en la línea 14 definimos el número de entradas a mostrar (en el ejemplo 4), que puedes cambiar a tu gusto.

3. Añadir estilos mediante CSS

Ahora bien, lo anterior no quedaría bonito ni atrayente si no creamos unas clases CSS adecuadas, que atraigan atención y coloquen las entradas relacionadas de manera ordenada.

Por tanto, y usando las mismas denominaciones de clases CSS de ejemplo usadas en el código previo, habría que crearlas en la hoja de estilos de tu tema activo, habitualmente el archivo style.css.

Lógicamente, es solo un ejemplo, y debes adaptarlo a los estilos generales de tu tema o tus gustos personales …

.relacionadas {width: 640px; margin: 0 0 20px 0; float: left; font-size: 12px;}
.relacionadas h3 {font-size: 20px; margin: 0 0 5px 0; }
.miniaturarelacionada {margin: 0 1px 0 1px; float: left; }
.miniaturarelacionada img {margin: 0 0 3px 0; padding: 0;}
.miniaturarelacionada a {color :#333; text-decoration: none; display:block; padding: 4px; width: 150px;}
.miniaturarelacionada a:hover {background-color: #ddd; color: #000;}

Lo que hace este CSS de ejemplo es mostrar las miniaturas con un ancho de 150 pixels, lo que significa que para un ancho del bloque principal de 640 pixels mostraría 4 entradas, márgenes incluidos. Por descontado que debes ajustar esto a tus necesidades, reduciendo el valor .miniaturarelacionada a 125 pixels si quieres 5 miniaturas, por poner un ejemplo. No digamos si el ancho del bloque de la entrada de tu tema WordPress es menor de 640 pixels.

También, y para terminar, es importante que definas el ancho de las miniaturas en los ajustes multimedia de WordPress al mismo tamaño especificado en el CSS que, además, debe coincidir con el tamaño definido en el código php en the_post_thumbnail(array(150,100).

Por lo demás funciona de maravilla, siempre y cuando etiquetes tus entradas claro, sino verás un feo espacio en blanco.

Imágenes en los menús personalizados de WordPress

menu de iconos

Los menús personalizados son una auténtica maravilla, aunque hayan supuesto la desaparición del gestor de enlaces. Permiten poner a nuestro gusto los menús de navegación en WordPress mediante una interfaz visual, algo que antes solo era posible modificando código manualmente.

Con menús personalizados podemos añadir elementos a la barra de navegación de nuestro tema fácilmente, eso si, habitualmente solo con texto, pero eso se puede mejorar, y vamos a ver 3 maneras de añadir imágenes a los menús personalizados.

1. Añadir imágenes mediante clases CSS

Es el método menos sencillo, pero también el más personalizable, pues las posibilidades son infinitas, solo dependen de tus conocimientos de CSS.

Para crear un elemento de menú que sea una imagen mediante este método el proceso es el siguiente:

  1. Crea una clase CSS para cada imagen o icono que vayas a usar en un menú. Aquí desarrolla tu habilidad e imaginación.
  2. Ve a “Apariencia -> Menús”, despliega las “Opciones de pantalla” y marca la casilla denominada “Clases CSS”
    imagen menu css 1
  3. Añade el elemento de menú personalizado con la URL y etiqueta que desees
    imagen menu css 2
  4. Despliega el elemento recién añadido y en el nuevo campo denominado “Clases CSS” pone el nombre de la que se aplicará a ese elemento concreto
    imagen menu css 3
  5. Guarda los cambios del menú … que siempre se te olvida

Y así para cada elemento que quieras añadir.

Es el método más complicado pero también el mejor pues la personalización puede ser total.

2. Añadir imágenes poniendo la URL de la imagen

Este método es un poco “ñapa” pero funciona de maravilla y es fácil de usar.

Lo que tienes que hacer es crear un nuevo enlace de menú de URL personalizada, pero en vez de poner un texto normal en el campo de etiqueta pones el código HTML con el que mostrarías la imagen en cuestión que quieras mostrar, o sea, algo cómo … 

<img title="Texto emergente de mi imagen" src="http://misitio.es/imagenes/imagen.png" />

Lo añades al menú y ya está, simple y efectivo. El elemento de menú se verá un poco raro al tener una etiqueta tan larga y extraña pero funciona de maravilla.

imagen menu con codigo 1 imagen menu con codigo 2

Por el puntillo friki que tiene es al método que tengo más cariño.

3. Añadir imágenes al menú con un plugin

Este método, cómo ya podrás imaginar, es sencillo a más no poder. Solo tienes que instalar un plugin llamado Nav menu images y empezar a usarlo. Ahora bien, no todo es tan bonito cómo parece.

A ver, no te asustes, que funcionar funciona, solo que requiere algún paso más del que imaginarás, pues en principio, al no tener página de ajustes ni nada parecido parece que no has instalado nada.

El proceso es el siguiente:

  1. Instalas y activas el plugin
  2. Añades un elemento de enlace personalizado al menú como harías habitualmente
  3. Guardas los cambios en el menú (si, ahora, tu hazme caso)
  4. Abres el elemento de menú recién añadido y verás un enlace bajo el campo de etiqueta para añadir una imagen al menú. Dale un clic
  5. Se abre el cargador de medios de WordPress, eliges una imagen y la asignas
  6. Guardas de nuevo los cambios

imagen menu mediante plugin

En realidad, cómo habrás visto, es sencillo, pero no es muy obvio que haya que guardar dos veces el menú, por lo que seguro que muchos han desinstalado el plugin antes de tiempo pensando que no funcionaba.

imagenes en menu wordpress

Bueno, y ya está, tu dirás qué método te ha gustado más, o incluso si conoces alguna manera más de hacer esto.

Guía para crear el perfecto tema WordPress

developer

En ThemeShaper han creado una guía para cualquier desarrollador que quiera crear un tema WordPress que atienda a todos los estándares, de manera que ofrezca la mejor experiencia puramente WordPress.

La guía está pensada para desarrolladores de temas para WordPress.com pero es igualmente útil para cualquier entorno WordPress. Y cómo creo que es de un tremendo interés aquí lo tienes en español …

Escapes

  1. Todos los datos dinámicos deben tener escape con esc_attr() antes de entregarse como atributo HTML
  2. Todas las urls dinámicas deben tener escape con esc_url().
  3. Si los datos dinámicos se entregan cómo el atributo de un elemento script HTML deben tener escape con esc_js().
  4. Las peticiones SQL que contengan datos dinámicos deben tener escape con $wpdb->prepare().

Internationalización

  1. Todos los textos visibles para el usuario deben prepararse para traducción.
  2. Evita HTML dentro de cadenas de las funciones “gettext” siempre que sea posible.
  3. La salida de sprintf() debe tener escape en las cadenas de texto utilizadas en los atributos.
  4. Los localizadores printf() deben tener escape antes de incluirlos en atributos HTML.
  5. Ofrece contexto donde haga falta.
  6. Evita anti-patrones comunes.

Peticiones (queries)

  1. Las peticiones SQL directas deben evitarse. Es mejor utilizar uno de los nuevos objetos WP_Query cuando sea posible.
  2. No pueden usarse peticiones ilimitadas. Básicamente, esto significa que el parámetro posts_per_page de WP_Query no puede establecerse a -1. Además, el parámetro numberposts de get_posts() (y funciones similares) también debe tener un valor positivo.
  3. Las peticiones grandes deben cachearse de manera transitoria.
  4. No se puede usar query_posts(). Si necesitas modificar la petición principal es mejor usar el filtro pre_get_posts. Si necesitas recuperar entradas además de la petición principal es mejor usar el nuevo objeto WP_Query.
  5. Los valores vacíos no deben pasarse al argumento  post__in usado para crear un nuevo objeto WP_Query. Si estás usando un valor dinámico que deba estar vacío es importante comprobar que está vacío antes de usar el valor en la petición (ejemplo).
  6. Las peticiones de términos deben comprobarse en una instalación que tenga 10.000 términos.

Envíos a la cola (enqueues)

  1. Todos los archivos de terceros incluidos deben ser compatibles con la licencia GPL.
  2. Asegúrate de que se usa el protocolo adecuado para poner en espera archivos de terceros.
  3. Asegúrate de que se usan los hooks adecuados para poner en espera scritpts y estilos.

Scripts

  1. Usa los scripts incluidos en la instalación estándar si existen.
  2. Los scripts personalizados no deben minimizarse.
  3. Los scripts de terceros que se incluyan no pueden minimizarse pero deben incluir lo siguiente:
    1. El nombre de la librería.
    2. Número de versión
    3. Licencia
    4. URL

Estilos

  1. La hoja de estilos principal (style.css) debe ponerse en espera durante la acción wp_enqueue_scripts.
  2. Nunca se debe utilizar overflow:hidden para que contenga objetos flotantes (floats). Es una alternativa mejor usar micro clearfix.
  3. La clave !important no debe utilizarse donde sea suficiente una especificación.
  4. El poner en espera una fuente de Google con varios bloques de caracteres incluye de manera condicional los bloques con gettext.
  5. No están permitidas los atributos de estilo en tags HTML.

Conflictos con plugins

El entorno de WordPress.com está sobrecargado con una gran cantidad de plugins que ofrecen funcionalidades compartidas con todos los temas. Para ofrecer a los usuarios una experiencia consistente no deberían incluirse en los temas funcionalidades que dupliquen las de los plugins. Esto también debe ser aplicable a otros entornos.

A la hora de diseñar temas para WordPress.com esto es lo se usa:

  1. Las opciones de publicidad se gestionan con WordAds.
  2. Los ajustes de color personalizado se gestionan con el plugin Custom Colors.
  3. Los ajustes de fuentes personalizadas se gestionan con el plugin Custom Fonts.
  4. Los favicons se gestionan con el plugin Blavatar.
  5. Se usa soporte HiDPI para las imágenes subidas por los usuarios
  6. El scroll infinito lo ofrece Jetpack.
  7. Protocolo Open Graph
  8. Soporte de Twitter meta tag
  9. Diversos widgets

Portabilidad de datos

Asegurar que el contenido del usuario no cambia cuando cambia de tema es muy importante. Las siguientes características de la instalación estándar de WordPress, aunque son fantásticas por si solas, pueden provocar un cambio en el contenido del usuario o no estar disponible si se activan desde el tema.

  1. Tipos de entradas personalizas públicas
  2. Taxonomías personalizadas públicas
  3. Campos personalizados o campos meta de entradas
  4. Códigos cortos (shortcodes)

Opciones del tema

Si tu tema incluye ajustes personalizados es altamente recomendable usar el Personalizador en vez de una pantalla personalizada de administración. Hacerlo así tiene muchas ventajas:

  1. Los usuarios pueden ver sus cambios inmediatamente, ya que se adapta a la interfaz de usuario.
  2. Hay que escribir mucho menos código.
  3. Dispones de módulos de interfaz de usuario para la mayoría de las situaciones habituales.

Si tu tema necesita ofrecer una pantalla de administración de ajustes personalizados estos son los requisitos:

  1. Debe ser un menú hijo del menú Apariencia, con el título de “Theme Options”.
  2. Se requiere el uso de la Settings API de WordPress.
  3. Todos los ajustes deben guardarse un “array” en serie.
  4. Los ajustes por defecto no deben insertarse en la base de datos hasta la instalación o una petición http.
  5. Todos los valores deben sanearse antes de guardarlos en la base de datos.
  6. Debe utilizarse la funcionalidad de la instalación estándar para cualquier necesidad de carga de archivos.

La mayoría de estos requisitos, si no todos, están en este Archivo de ejemplo de ajustes de temas para principiantes.

Miscelanea

  1. Deben usarse los “loops” completos en todas las plantillas. No es suficiente simplemente con llamar a the_post() en una plantilla cómo single.php o page.php.
  2. El $content_width global debe definirse correctamente.

wordpress-codex-themes

Guías de usabilidad

La Unidad de datos de prueba para temas de WordPress.org está repleta de entradas y páginas diseñadas para llevar tu tema a sus límites. Descarga los datos e impórtalos a tu servidor de pruebas. Probar tu tema con todos los tests disponibles te ayudará a asegurar que tu tema será lo suficientemente flexible para manejar una amplia variedad de datos reales de usuario.

Recursos

Traducción (algo libre pero precisa en lo vital) de Theme guide

Cambiar el color de fondo al seleccionar texto en WordPress

cambiar color texto seleccionado wordpress

Pues si, la diferencia está en los detalles, y si nos ponemos a personalizar nuestra web nunca hay límites a la hora de ofrecer una experiencia de diseño uniforme a nuestros visitantes.

Para rizar el rizo de la personalización y el diseño consistente, Brian Gardner nos anima a “tunear” el color de fondo con el que se decora un texto al seleccionarlo cuando visiten nuestro WordPress.

La idea es que, mediante CSS, ese color esté dentro de la paleta de nuestro diseño, y no el color por defecto del sistema del visitante. ¿Cómo se hace?, pues bien sencillo, sólo tienes que añadir una nueva clase CSS a tu hoja de estilos, normalmente con el nombre style.css y situada en la carpeta del tema activo donde, dentro de la sección del body, añadiremos lo siguiente:

/* Body */
::-moz-selection {
    background-color: #ff6200;
    color: #fff;
}

::selection {
    background-color: #ff6200;
    color: #fff;
}

En el ejemplo el código hexadecimal para el color (#ff6200) es un bonito color naranja, que deberás cambiar al que se ajuste a tu diseño.

El selector ::selection está soportado por IE9+, Opera, Google Chrome y Safari. El otro selector, ::-moz-selection es el que soporta Firefox, de ahí que tengamos que añadir ambos.

¿Te ha gustado el truco?, ¿lo vas a incorporar en tu WordPress?

Vulnerabilidad XSS en JetPack ¡Urgente!

Parece ser que está confirmada una grave vulnerabilidad XSS (Cross Site Scripting) en el plugin JetPack, por la que tu sitio puede quedar expuesto a inyecciones de código. Según se ha avisado en los foros de soporte, de lo que me ha avisado José Conti, el plugin JetPack está utilizando una versión...

[[ Este es el resumen diario, si quieres ver códigos, comentar o disfrutar de la experiencia completa mejor visita la web haciendo clic en el título ]]

Cómo instalar fuentes Google en WordPress

El otro día me preguntaba un amigo por Twitter que cómo podía usar otras fuentes en WordPress. En concreto, el ejemplo que me mostraba en realidad no usaba otra fuente sino que era una imagen.

Luego, además, estaba el asunto de que aunque tu definas un tipo de fuente en tu WordPress, si el usuario que lo ve no tiene esa fuente instalada en su sistema no la verá, sino su “equivalente“, pero bueno, en cualquier caso me animé a ver maneras de instalar más fuentes.

Y las primeras que me vinieron a la mente fueron las fuentes Google, pues tienen una virtud fundamental: no necesitas instalarlas en tu servidor, sino que las usas desde los servidores gratuitos de fuentes de Google.

Así que vamos a ver un par de maneras de usarlas …

… Instalar fuentes Google con plugin …

Cómo se que muchos sois amantes de los plugins, hay uno que hace maravillas a este respecto, WP Google fonts. Solo tienes que instalarlo y, una vez activo, en su página de ajustes puedes definir qué fuentes y para qué estilos de tu tema usarás fuentes Google.

Lo mejor de este plugin es que te evitas modificar manualmente la hoja de estilos, editar la cabecera de tu sitio para hacer una “llamada” al servidor de fuentes de Google (de otro modo imprescindible) y que dispones de una interfaz para hacer los cambios de manera rápida y sencilla.

… Instalar fuentes Google manualmente …

Ahora bien, si quieres hacerlo tu mismo en realidad no es complicado, con solo 2 pasos tienes a tu disposición las – ahora mismo – 573 familias de fuentes gratuitas de Google

  1. Importa las fuentes de Google: Añade al principio de la cabecera de tu tema (header.php), antes del cierre de </head> así:
    <link href='http://fonts.googleapis.com/css?family=Faster+One' rel='stylesheet' type='text/css'>

    O también mediante Javascript de este otro modo:
    <script type="text/javascript">
      WebFontConfig = {
        google: { families: [ 'Faster+One::latin' ] }
      };
      (function() {
        var wf = document.createElement('script');
        wf.src = ('https:' == document.location.protocol ? 'https' : 'http') +
          '://ajax.googleapis.com/ajax/libs/webfont/1/webfont.js';
        wf.type = 'text/javascript';
        wf.async = 'true';
        var s = document.getElementsByTagName('script')[0];
        s.parentNode.insertBefore(wf, s);
      })(); </script>

    En ambos casos estamos importando la fuente llamada Faster One, que personalmente me gusta mucho.
  2. Integra las nuevas fuentes en tu hoja de estilos: abre tu fichero style.css y añade clases CSS para usar la/s nueva/s fuente/s donde quieras, algo así:
    body {
    font-family: 'Faster+One', serif;
    font-size: 48px;
    text-shadow: 4px 4px 4px #aaa;
    }

Otra manera de hacerlo manualmente, en vez de hacer la llamada en la cabecera HTML, que me parece más elegante, y es mediante una función en tu plugin de funciones o archivo functions.php del tema.

En el siguiente código primero se hace la llamada a la hoja de estilos mediante wp_register_style. En el segundo parámetro tenemos la ruta a la hoja de estilos, que deberás adaptar a tu instalación. Para finalizar, la llamada wp_enqueue_style( ‘googleFonts’ ) se ocupa de llamar a la hoja de estilos identificada en wp_register_style. Al guardarlo tendremos disponibles las fuentes “reclamadas” para usarlas en nuestra hoja de estilos como en el segundo paso del método anterior.

Seguramente te habrás fijado que en el código no se importa solo una fuente, sino varias, separándolas con la barra vertical (la de encima del número 1 del teclado). Google deja hacer este tipo de llamadas múltiples, lo que es muy cómodo.

//Importación de fuentes Google
add_action('init', 'theme_js_css');
function theme_js_css(){
wp_register_style( 'googleFonts', 'http://fonts.googleapis.com/css?family=Faster+One|Bonbon|Romanesco|Molle');
wp_enqueue_style( 'googleFonts' );
}

Y ya está, un par de maneras sencillas (en realidad son tres) de usar las fuentes gratuitas de Google en WordPress.

Nota final: Aunque nunca lo recomiendo, pues si hay una hoja de estilos es para respetarla, si quieres usar las nuevas fuentes en textos desde el editor, siempre puedes añadir más iconos al editor visual de WordPress.

Ayuda WordPress está alojado en Gigas Cloud WordPress, hosting en la nube especializado en WordPress

“Retiniza” tu tema WordPress

Apple ha introducido en muchos de sus dispositivos el concepto de visualización llamado “Retina display“, mediante el cual un dispositivo mostrará el doble (por lo menos) de resolución de otro similar, gracias a las pantallas de alta calidad que usan, por ejemplo, los últimos iPhone, iPad y ordenadores MacBook.

Si has probado uno de estos dispositivos con pantalla retina habrás comprobado que la resolución de las tipografías y las imágenes es realmente espectacular.

Para tener una web “retina ready” hay que tener en cuenta varios aspectos, los principales son estos:

  • Imágenes a mayor resolución, algo fácil de añadir mediante varios métodos que veremos más adelante.
  • Iconos y botones mediante CSS, para poder mostrar diferentes versiones según el dispositivo.
  • Favicons, lo más fácil, pues solo tienes que subir un favicon a 32×32 pixels en vez del estándar a 16×16

Y, cómo no, en WordPress podemos estar preparados para ofrecer una versión “retina ready” de nuestra web, para lo que tenemos varias posibilidades, algunas realmente sencillas. Vamos a ver algunas opciones, unas más fáciles que otras …

…Plugins WordPress…

WP Retina 2x: Este plugin convierte nuestro WordPress en “retina ready“, al menos en lo que a imágenes se refiere. Ofrece dos modos distintos de servir imágenes a tus visitantes, pudiendo elegir el que se adapte mejor a tu alojamiento y entorno. También dispone de soporte para WordPress multisitio.

El plugin, una vez activo, crea los archivos de imagen necesarios para dispositivos con pantalla Retina. Si la resolución de las imágenes originales no fuera lo suficientemente alta te muestra un aviso en la Librería Multimedia para que subas imágenes a mayor resolución.

Desde el primer momento, el plugin reconoce el dispositivo desde el que se esté visualizando tu web y mostrará la versión de las imágenes adecuada al mismo, siendo la de mayor resolución en el caso de los de pantalla Retina.
wpretina2 wpretina 1

Simple WP Retina: otro estupendo plugin que cambia, cuando tu web se ve desde un dispositivo con pantalla retina, a la versión @2x de las imágenes.

Para ello, el plugin crea versiones @2x de las imágenes de las entradas y también para las miniaturas. No hay nada que configurar, pero también tienes que instalar el plugin regenerate thumbnails una vez instalado Simple WP Retina y ejecutar el regenerado de miniaturas, el resto es automático.

… Temas WordPress …

Por supuesto, te ahorrará tiempo y esfuerzos utilizar un tema que ya esté listo para pantallas retina, como Responsive (gratuito) u otro montón que puedes encontrar (ya de pago)

… Redimensionado mediante CSS …

Esto ya existe, no tienes que instalar ni aprender nada. La idea es sencilla: servir imágenes al doble de resolución pero redimensionadas a la mitad. El dispositivo con pantalla Retina mostrará la imagen a su tope de resolución, la única pega es que siempre cargas la imagen a tope de resolución, aunque no sea necesario en dispositivos sin pantalla Retina.

Vamos, que lo que tienes que hacer es adquirir la costumbre de siempre subir las imágenes al doble de resolución de las que las vas a mostrar en tu tema y redimensionarlas ,usando los atributos “width” y “height“, todas a la mitad al insertarlas.

En definitiva, sería algo así para una imagen de resolución 640×400:
<img src="http://midominio.com/wp-content/uploads/2012/11/03/pedazo_de_foto.png" width="320" height="200" />

… Javascript …

Un modo de conseguir lo mismo que con los anteriores métodos es mediante el script Retina.js. Una vez lo descargues del sitio oficial el proceso es este:

  1. Sube el archivo retina.js a tu servidor
  2. Añade el script necesario al archivo footer.php de tu tema activo, antes de la etiqueta </body>:
    <script type="text/javascript" src="/scripts/retina.js"></script>

Lo que hace el script es asumir que usas el modificador de alta resolución recomendado por Apple (@2x) para identificar variaciones de imágenes de alta resolución en tu web y, de este modo, si insertas una imagen llamada, digamos pedazo_de_foto.png, entonces buscar una llamada pedazo_de_foto@2x.png que será la que mostrará a dispositivos con pantalla retina. Así que ya sabes lo que toca: subir siempre la susodicha, o en su defecto utilizar el truco de LESS CSS cómo se explica en la web oficial de Retina.js.

… Fuentes iconizadas …

Una de las cosas más horribles al “retinizar” una web son las fuentes, pues la redimensión las muestra horriblemente pixelizadas. Para solucionar esta importante faceta podemos utilizar la técnica @font-face, muy implantada a partir de Twitter bootstrap, y bastante fácil de añadir a nuestro WordPress mediante Font awesome, que permite instalar iconos de fuentes tipográficas en forma de vectores que, sin recargar enormemente tu web, mostrarán una versión a alta calidad que se verán de maravilla en pantallas Retina.

Una vez descargues Fong Awesome haz lo siguiente:

  1. Copia la carpeta “Font Awesome” en tu servidor
  2. Copia los archivos font-awesome.less o font-awesome.css en la carpeta de tu tema WordPress activo.
  3. Abre el archivo CSS subido y edita la URL de la fuente para que apunte a la carpeta donde subiste Font Awesome

Otro modo de hacerlo es crear tu propia tipografía con servicios como Font builder y luego implementar las nuevas fuentes en tu sitio creando clases CSS que usen @font-face.


Bueno, como verás hay de todo, desde lo más sencillo hasta modos especiales para desarrolladores. Lo que parece que está claro es que la web tiende a retinizarse poco a poco y hay que tener en cuenta estas técnicas si queremos que nuestra web creada con WordPress sea competitiva y aporte valor añadido a estos dispositivos con pantalla Retina que cada vez se usan más.

Ayuda WordPress está alojado en Gigas Cloud WordPress, hosting en la nube especializado en WordPress

Menú personalizado por defecto en un nuevo tema WordPress

menu personalizado wordpress

Los menús personalizados son una de las maravillas de WordPress que, desde hace varias versiones, nos permiten personalizar nuestro tema sin necesidad de tocar código.

Para el usuario final hasta aquí bien …

Pero también para los desarrolladores de temas son una oportunidad, aunque a veces también un problema, afortunadamente con solución.

Me refiero a que si desarrollas tu tema y en el código defines un menú, en cuando el usuario elabore su propio menú personalizado “matará” tu código, perdiendo algunas utilidades que le podrían gustar, o incluso ser imprescindibles, como enlaces a Twitter o incluso a la suscripción por RSS, todo con unas bonitas clases CSS o iconos.

Así que hace falta algo de reciclaje también para el desarrollador de temas WordPress y, para evitar esto, empezar a incorporar desde ya menús personalizados por defecto en sus temas.

Si estás animado entonces lo que tendrás que empezar a hacer es incluir en el fichero functions.php de tu tema algo como lo de este ejemplo:

/*-----------------------------------------------------------------------------------*/
/* Menú personalizado y activo por defecto
/*-----------------------------------------------------------------------------------*/

add_action('load-themes.php', 'aw_register_custom_menu');

function aw_register_custom_menu() {
  register_nav_menu( 'main_menu', __('Menú principal') );

  if ( isset( $_GET['activated'] ) && $_GET['activated'] ) {
    if ( !is_nav_menu( 'Menú principal' ) ) {
      $menu_id = wp_create_nav_menu( 'Menú principal' );

      $menu_home = array( 'menu-item-type' => 'custom', 'menu-item-url' => get_home_url('/'),'menu-item-title' => 'Inicio', 'menu-item-attr-title' => 'Home' );
      $menu_twitter = array( 'menu-item-type' => 'custom', 'menu-item-url' => get_home_url('/'),'menu-item-title' => 'Twitter', 'menu-item-attr-title' => 'Twitter', 'menu-item-classes' => 'twitter' );
      $menu_subscribe = array( 'menu-item-type' => 'custom', 'menu-item-url' => get_home_url('/'),'menu-item-title' => 'Suscripción', 'menu-item-attr-title' => 'Suscripción', 'menu-item-classes' => 'subscribe' );

      wp_update_nav_menu_item( $menu_id, 0, $menu_home );
      wp_update_nav_menu_item( $menu_id, 0, $menu_twitter );
      wp_update_nav_menu_item( $menu_id, 0, $menu_subscribe );

      set_theme_mod( 'nav_menu_locations', array(
        'main_menu' => $menu_id,
      ) );
    }
  }
}

Huelga decir que deberás modificar el código para que se ajuste a tus necesidades y gustos, igual que crear las clases CSS adecuadas, pero esa es la idea.

Lo que obtienes es que cuando un usuario o cliente active tu tema ya tendrá activo tu menú personalizado por defecto y así, en vez de borrar lo que había, lo podrá personalizar igualmente a su gusto, pero sin perder el “feeling” que tu le imprimiste en tu código.

Mucho mejor ¿no?

Ayuda WordPress está alojado en Gigas Cloud WordPress, hosting en la nube especializado en WordPress

Los 10 mandamientos del desarrollador WordPress

Ser desarrollador WordPress no requiere  unas habilidades especiales, distintas de las de programar en PHP o CSS, pero si hay consejos que pueden marcar diferencias y elaborar desarrollos sólidos y, sobre todo, sin problemas para el mismo o sus clientes.

Es por ello que he creído conveniente, por lo acertados que son los consejos, traducir esta lista elaborada por Floris P. Lof:

1. Siempre define WP_DEBUG a true durante el desarrollo

Ni te imaginas la cantidad de avisos de errores de código que vas a recibir de plugins y temas. Todos estos avisos de bajo nivel pueden provocar fallos de memoria, que reducirán el rendimiento del sitio al consumir más memoria de la necesaria. WP_DEBUG también es una herramienta muy útil para descubrir si estás usando funcionalidades obsoletas.

2. Atente a los estándares de código y CSS de WordPress

Los estándares de WordPress se han establecido tras años de experiencia. Si te atienes a estas reglas obtendrás un código limpio y fácilmente leible para ti y para otros. De ahí el slogan “el código es poesía”..

3. Comenta tu código

Tu código no solo debe ser fácil de leeer por otros sino que debes ser capaz de que el resto cualquiera entienda porqué elegiste escribir un código en tal o cual modo. Hay muchas maneras de vestir un santo, pero explica tu elección siguiendo las indicaciones del Codex.

4. Aprende como funciona el “core” de WordPress, lee las líneas de código reales

Deberías saber cómo fucniona WordPress internamente. ¿Cuando se cargan los plugins en mulsitisio?, ¿cuando se hacen peticiones a la base de datos?, ¿cuando se cargan los archivos de los temas? y todo eso. Puedes aprender un montón de leer el “core” de WordPress.

5. Usa las funciones y APIs internas de WordPress siempre que puedas

No reiventes la rueda, antes de escribir código aprende si hay una función o procedimiento que ya esté en el “core”. Aprende del “core”, como he apuntado antes, y descubre como funciona todo. Te sorprenderá todo lo que vas a encontrar ahí. Unos ejemplos serían estas funciones de utilidad.

6. Pon prenombre a tu código

Hay mucha gente que escribe código para WordPress en temas y plugins. Y es bastante posible que tu nombre de función, o clase de variable sea el mismo que use otra persona. Por ello deberías siempre ponerle prenombre, como tus iniciales o la de tu web. Por ejemplo (AW):

aw_nombredefuncion();

7. ¡Nunca te fíes de la acción del usuario! ¡Sanitiza & escape!

Esto es un problema importante, ahora y quizás siempre. WordPress se carga con herramientas que te permiten escribir sitios seguros. Una buena idea sería el  capítulo 6  de este libro. Ya lo tenías ¿no?

8. Usa nonces

Esto sería una extensión del mandamiento anteriior. Usar “nonces” asegura todas las funcionalidades que tus formularios necesitan. Revisa esta página del Codex

9. Localiza tu código

En Europa, al contrario que en América, estamos muy acostumbrados a escribir en varios idiomas, así que no es de sorprender que un cliente te pida que un tema o plugin esté disponible en otro idioma o dialecto.

Así que escribe tu código pensando en que sea “internacionalizable”. Esto hará que añadir otro idioma en el futuro sea más fácil.

10. Rendimiento, rendimiento, rendimiento

Hay que desarrollar sitios de alto rendimiento. En todo el código que escribas o incluyas, ya sea una petición a la base de datos, código PHP, HTML, CSS, JavaScript o adjuntos como imágenes, siempre ten en mente el rendimiento. Cada nanosegundo cuenta.

Ayuda WordPress está alojado en Gigas Cloud WordPress, hosting en la nube especializado en WordPress

Limpiar código de las imágenes subidas en WordPress

Cuando subimos una imagen a WordPress para incluirla en una entrada o página el código insertado en la entrada tiene elementos innecesarios, normalmente ya cubiertos por el CSS, propio de WordPress o del mismo tema que usemos.

Por supuesto, podemos modificar este código posteriormente, eliminando lo que sobra, pero si por eso fuera no escribiríamos, estaríamos todo el día corrigiendo errores tontos del software que usamos, en este caso WordPress.

De lo que estoy hablando es de que cuando subes una imagen y la insertas desde WordPress lo que obtienes es un código más o menos así:

<a href="http://misitio.com/wp-content/uploads/2012/10/imagenchula.png"><img src="http://misitio.com/wp-content/uploads/2012/10/imagenchula-550x820.jpg" alt="" width="550" height="820" class="alignnone size-large wp-image-29105" /></a>

Igual no lo sabes pero sobran algunas “tags, pues parte del código de la imagen es en realidad innecesario, especialmente el que define el ancho y alto de la imagen, ya que también lo está gestionando la clase CSS “alignnone que incluye WordPress automáticamente, pues determina las dimensiones de la imagen.

Dicho esto, si limpiamos manualmente un poco el código, valdría exactamente igual de este modo (de hecho es mejor):

<a href="http://misitio.com/wp-content/uploads/2012/10/imagenchula.png"><img src="http://misitio.com/wp-content/uploads/2012/10/imagenchula-550x820.jpg" alt="esto es mi imagen chula" class="alignnone size-large wp-image-29105" /></a>

Pero como ya he dicho antes, se supone que usamos WordPress para escribir cosas y compartirlas, no para dedicarle más tiempo al código que a la propia redacción de contenidos ¿no?.

Pues entonces, si te parece, podemos evitarnos esa tarea y automatizar la “limpieza” de código innecesario en nuestro WordPress, simplemente añadiendo unas líneas a nuestro plugin de funciones o al archivo functions.php del tema que tengamos activo, estas:

//Eliminar tags inútiles de ancho/alto a imágenes subidas
add_filter( 'post_thumbnail_html', 'remove_width_attribute', 10 );
add_filter( 'image_send_to_editor', 'remove_width_attribute', 10 );

function remove_width_attribute( $html ) {
    $html = preg_replace( '/(width|height)="\d*"\s/', "", $html );
    return $html;
}

Cuando guardemos los cambios, a partir de ese momento se eliminarán los elementos de ancho y alto de las imágenes que subas para incluirlas en entrada y páginas, pero también para las que hayas definido como miniaturas en tus entradas, y también en las imágenes destacadas.

Fácil y, sobre todo, barato.

Ayuda WordPress está alojado en Gigas Cloud WordPress, hosting en la nube especializado en WordPress