Hiberna WordPress en modo solo lectura

Esta es otra de esas cosas que uno siempre piensa que debería ser posible y ni imagina que ya está disponible, me refiero a la posibilidad de poner WordPress un modo hibernación, de manera que tu web admita visitas e incluso acceso al Escritorio de usuarios registrados mientras realizas tareas de mantenimiento, pero sin peligro de que nadie toque nada.

Alguno me dirá que puedes servir la web entera desde la cache pero no me refiero a eso, sino a tener todo tu WordPress accesible para los visitantes y usuarios registrados pero sin que nadie pueda introducir cambios mientras realizas acciones importantes.

Para esto es para lo que ha nacido Code Freeze, una absoluta maravilla de plugin que, mientras está activo …

  • Desactiva añadir, editar o borrar contenido, archivos, temas, etc
  • Desactiva instalar, activar, desactivar, actualizar o borrar plugins (excepto el mismo)
  • Desactiva comentarios y trackbacks en todos los contenidos
  • Quita el widget “Publicación rápida” y avisos de actualizaciones de WordPress o plugins
  • Ofrece un aviso en el Escritorio para que los usuarios sepan que cualquier cambio que hagan se perderá mientras esté activo
  • Ofrece acceso “solo lectura” al Escritorio

Esto afecta a todos los usuarios, incluidos los administradores, y es perfecto en situaciones de mantenimiento, como cambios de DNS, de alojamiento o dominio, o simplemente cualquier situación en que quieras “hibernar” tu WordPress para que  nadie haga cambios hasta que tu mismo lo decidas.

Cuando haya pasado la situación que requirió el uso del plugin Code Freeze simplemente lo desactivas y todo vuelve a la normalidad, sin tablas añadidas a tu base de datos y todo de vuelta a la normalidad.

¡Mooola mil!

WordPress infinitos, bajo tu control

Ya he hablado anteriormente de ManageWP, un gestor integrado de sitios WordPress, pero este sistema adolecía de un problema para algunos, el hecho de que es un servicio que tienes que usar en un servidor externo, no lo puedes instalar donde tu quieras.

Pues bien, ya tenemos una opción, esta vez si alojable en tu propio servidor.

Estoy hablando de InfiniteWP, un software descargable, que no es un plugin WordPress, desde el que puedes administrar tantas instalaciones de WordPress como quieras.

Además, es un software gratuito que, en su actual versión básica inicial permite lo siguiente:

  • Acceso remoto con uno solo login
  • Copias de seguridad y restauraciones automáticas
  • Actualizaciones de WordPress, plugins y temas a un solo clic
  • Activación en lote de plugins y temas
  • Instalación en lote de plugins y temas
  • Organización de tus sitios WordPress en grupos, para una gestión más sencilla

Como puedes comprobar, tienes algunas de las configuraciones premium de ManageWP de manera gratuita en este caso, lo que lo convierte en una muy buena opción.

Ahora bien, hay otras herramientas que no son gratuitas y que aún no se sabe el precio, a saber …

  • Gestión integrada de Google Analytics
  • Clonado e instalación de WordPress
  • Gestión centralizada de entradas y comentarios
  • Creación en lote de entradas, páginas y enlaces
  • Copias de seguridad programables
  • Editor centralizado
  • Copias de seguridad a Amazon S3 o Dropbox
  • Gestión integrada de usuarios

De nuevo, hay herramientas que ya están disponibles en ManageWP, a precio módico, que en este caso aún no podrás disfrutar hasta que estén disponibles.

En cualquier caso es una muy buena opción para probarlo al menos, pues la instalación es muy sencilla. Solo necesitas descargar la última versión, subirla a la carpeta que desees de un servidor propio y acceder a la ruta elegida, se iniciará el proceso de instalación, igual que pasa con WordPress.

En este proceso solo se te pedirá la información de la base de datos (necesitas una) donde se almacenarán los “ídem” de InfiniteWP. Es rápido y sencillo, como puedes ver en este vídeo:

Los requisitos del servidor para alojarlo, que se comprueban en el proceso de instalación, son tener PHP 5.2.4 o superior con soporte CURL y MySQL versión 5.0.2 o superior.

Luego, una vez instalado, es realmente sencillo crear grupos y empezar a añadir sitios. Para esto también tienes aquí un vídeo que lo explica, aunque es bastante intuitivo el sistema:

Y para terminar, otro vídeo con un repaso de todo lo que ofrece InfiniteWP, el que he probado y, a pesar de estar en la primera versión, funciona más que bien a pesar de las – quizás – pocas funcionalidades iniciales.

O, si lo prefieres, aquí tienes un tour para ver como funciona, además de unas capturas de lo que te encuentras una vez instalado y en marcha.

tour_master_login02 tour_plugins_themes tour_backups tour_updates02 fancy_shots_updates fancy_shots_groups02 fancy_shots_backup02 fancy_shots_plugins_manage InfiniteWP-Login

Editor de tipos de entrada personalizadas

Seguro que alguna vez has querido modificar los nombres de los tipos de entrada personalizadas, ya sea para ti mismo o para ofrecer una personalización mayor a tus clientes.

¿Te gustaría que las entradas se llamaran artículos, o que en vez de “Añadir nuevo medio” fuera “Añadir nuevo archivo“, por ejemplo?

Pues bien, es muy fácil.

Olvídate de modificar archivos PHP, y muchísimo menos de cambiar algo en los archivos del núcleo de WordPress, que ya sabes que se perderían en las actualizaciones.

Gracias a CPT Editor puedes etiquetar a tu gusto todos los tipos de entrada personalizadas que tengas disponibles:

  • Tipos de entrada personalizada del núcleo de WordPress
  • Tipos de páginas personalizada del núcleo de WordPress
  • El tipo de entrada personalizada “medio” del núcleo de WordPress
  • Cualquier tipo de entrada personalizada creada por un plugin
  • Cualquier tipo de entrada personalizada creada por un tema

Creo que se cubre todo el espectro ¿no?

Además, es un plugin muy fácil de usar. Su interfaz te muestra inicialmente todos los tipos de entrada personalizada registradas, y puedes editar cada una de ellas a tu gusto, realmente simple, para todos los niveles.

cpt editor cpt tipos registrados

¡Un gran descubrimiento!

QR de WordPress

Si quieres poner un código QR con el aspecto del logo de WordPress, que además funciona y te lleva a WordPress.org, aquí tienes este bonito código creado por Dougal Campbell con la aplicación QaRt Coder, con la que eliges una imagen, pones la URL de destino y tienes tu código QR personalizado.

Puedes usarlo a tu gusto, donde quieras y como quieras.

Quitar la fecha visible en tu tema WordPress

No siempre uno quiere que, junto a los artículos, se muestre la fecha en que se publicaron. Lo que pasa es que muchos temas WordPress, la verdad es que la mayoría, incorporan esa “utilidad“, y se empeñan en mostrar la fecha de publicación.

Pero vamos, no te preocupes, es fácil quitar ese elemento ¿molesto?

Como siempre, vamos a ver como quitar la fecha de publicación de dos maneras:

1. Quitar la fecha de publicación en el código

En realidad es muy fácil, solo tienes que abrir uno de los siguientes archivos (por lo menos) de tu tema:

  • index.php
  • home.php
  • blog.php
  • tag.php
  • archive.php
  • category.php
  • single.php
  • page.php

Abre esos archivos, y cualesquier otro que muestre archivos de entradas de algún modo, y procede a eliminar cualquiera de los siguientes códigos, o similares, si los encuentras:

<?php the_date(); ?>
<?php the_time(); ?>
<?php the_time('F jS, Y') ?>
Published on <?php the_time('F jS, Y') ?>
Publicado el <?php the_time('j F, Y') ?>

Guardas los cambios y ya lo tienes

2. Quitar la fecha de publicación con plugin

Ahora bien, si no tienes aún sobrecargado WordPress de plugins, o tienes un miedo atroz a modificar cualquier archivo de tu tema, siempre puedes instalar el plugin llamado WP post date remover.

Lo mejor de este plugin es que no hay nada que configurar pues ni siquiera tiene página de ajustes, simplemente lo instalas, lo activas y ya está. Además, funciona en muchísimos temas, aún los más actualizados a las últimas versiones de WordPress.

Rich Snippets en WordPress

Los rich snippets son el resultado de la inclusión de microformatos en las páginas de resultados de búsqueda de Google que incluyen algún tipo de interactividad por parte de los usuarios que han visitado el sitio web que aparece en los resultados.

El elemento más visible son las estrellas de los sistemas de puntuación que usan sitios como el mismo repositorio de WordPress.org, webs de revisión de películas y sitios así.

Estos rich snippets ofrecen una visibilidad extra al sitio web en la página de resultados, por lo fácilmente identificables, atrayentes, que son las estrellas a color que los identifican, que habitualmente generan más clics hacia los sitios que tienen estos llamativos elementos. Sólo por eso es una buena idea incorporar un sistema de puntuación en tu WordPress que genere estos rich snippets en los resultados de Google.

Vamos a ver algunos … 

  • Author hReview – Quizás el más completo, y hasta la fecha parece que eficaz. Incorpora un sistema completo de revisiones de artículos por parte de los autores del sitio que, además de en tu sitio, muestra estrellas de valoración de las publicaciones
  • Seo ultimate – Este completo plugin de SEO incorpora, entre su multitud de herramientas, un generador de rich snippets, que puedes configurar a tu gusto.
  • GD Star rating – Completo plugin de puntuaciones y revisiones para WordPress, que también puede generar los rich snippets. No obstante, para este uso concreto no lo recomiendo pues es un gran devorador de recursos, quizás de los mayores que hay.
  • Google rich snippets – Plugin especializado en añadir un sistema de valoraciones que genera rich snippets.
  • The SEO rich snippets – Este plugin ofrece un sencillo sistema de revisiones que también se ve reflejado como rich snippets en los resultados de Google

Una vez implantado un sistema puedes comprobar si funcionan los rich snippets en esta herramienta de Google, a sabiendas de que debes esperar un poco, pues no es inmediato.

Escritorio de WordPress como CMS

Hay algo que a muchos no les gusta de WordPress: el Escritorio. Y no es que no sea intuitivo, ni útil, pero el hecho de que las acciones más habituales no estén en forma de iconos sino como menús, en realidad submenús de “+ Nuevo” o similares, les parece una pérdida de tiempo, y si te soy sincero yo opino igual.

Pues bien, si eres de los ahorrativos en clics, y te gustaría tener nada más en el escritorio una lista de iconos que, a un clic, te lleven a lo que haces habitualmente en WordPress, CMS Dashboard es lo que buscas.

Una vez instalado solo tienes que ajustar qué iconos quieres que se muestren y tu Escritorio se simplifica al máximo, mostrando como widget principal uno con los iconos que hayas definido, como Añadir nueva entrada, Añadir usuario, Editar Comentarios, etc.

cms dashboard ajustes cms dashboard widget

Sobre todo es muy apañado para clientes que no quieren andar aprendiendo la estructura de menús de WordPress, y con este plugin les ofreces un entorno sencillo estilo CMS en el que encontrarán lo fundamental en unos claros y grandotes iconos.

Simple, eficaz y te ahorra unos cuantos clics cada día.

Varnish y WordPress

Como el otro día comenté algo sobre Varnish y un nuevo plugin, y alguno ya preguntasteis en los comentarios, creo que ya iba siendo hora de explicar lo que es  Varnish, un sistema de cache realmente potente, fantástico para instalaciones WordPress con mucho tráfico, y que como ya puedes imaginar uso aquí en Ayuda WordPress.

Vamos a ello pues …

¿Qué es Varnish?

Varnish Cache es un acelerador web, o un sistema de cache HTTP de reverse proxy. Se instala en cualquier servidor que sirva (vale, es redundante) HTTP y se configura para que cachee sus contenidos. Según algunos estudios acelera el servicio en un 70%.

Cachear una web, por si alguien no lo sabe aún, es almacenar una copia de la misma para que sea la que vean los visitantes futuros. En el caso de Varnish y WordPress, lo que consigue es servir páginas cacheadas (almacenadas) de tu WordPress para que no tenga este que hacer llamadas a la base de datos cada vez que alguien visita tu web. Esto reduce la carga del servidor ya que simplemente sirve una copia única de las páginas a todos los visitantes sin tener que buscar las mismas imágenes y servicios para cada contenido y cada visitante.

Además, Varnish cachea las páginas en memoria virtual, para que tu sitio cargue mucho más rápido, lo que de paso mejora tu SEO, pues Google tiene estimado que por cada medio segundo de tiempo de carga adicional de una web esta recibe una media de un 20% de menos visitantes (fuente). De este modo, reduciendo con Varnish de manera importante el tiempo de carga de página pueden aumentar tus visitas y mejorar tu ranking en los buscadores, algo siempre a tener en cuenta.

La gente de Varnish ha publicado un vídeo muy simple, al tiempo que explicativo que seguro te ilustra sobre lo que hace …

Instalando Varnish

Varnish es un software libre así que no tienes excusas para instalarlo ahora mismo. Se ejecuta en Linux, preferiblemente en FreeBSD, pero puede funcionar igualmente en otras plataformas. Una vez lo instales puedes personalizarlo para definir cuantas peticiones entrantes gestionará mediante el Idioma de Configuración de Varnish (Varnish Configuration Language o VCL).

Varnish está pensado para que sea flexible, para que lo instales pensando en un sitio concreto en mente, y lo adaptes de manera personalizada a el.

Lo ideal es empezar con una configuración básica de Varnish, para más adelante ir probando pequeños cambios y ver como afectan al rendimiento del sitio concreto. Hay varias subrutinas que le dicen a Varnish como responder a las peticiones entrantes y salientes, a los errores, etc.

Así que vamos a empezar con una configuración básica, para luego echar un vistazo a las funciones básicas del VCL y luego ya tu lo tuneas a tu gusto.

Paso a paso

Poner en marcha Varnish es bastante sencillo. Partiendo de una base de, digamos, Apache en un sistema Debian (la mayoría de los servidores Linux), aunque también funciona en el resto, empezaríamos con este comando:

apt-get install varnish

Primero  hay que configurar Apache para que “escuche” el puerto 8080 de localhost. Varnish podrá entonces escuchar el puerto 80 (por donde vienen las visitas). En el archivo /etc/apache2/ports.conf, edita estos ajustes:

NameVirtualHost 127.0.0.1:8080
Listen 127.0.0.1:8080

Para que se inicie Varnish (por defecto no lo hace), edita lo siguiente en el archivo /etc/default/varnish

START=yes
DAEMON_OPTS=”-a DIRECCION_IP_EXTERNA:80 \
	-T localhost:6082 \
	-f /etc/varnish/default.vcl \
	-S /etc/varnish/secret \
	-s file,/var/lib/varnish/$INSTANCE/varnish_storage.bin,1G”

Reemplaza DIRECCION_IP_EXTERNA con la IP de tu dirección IP externa. También puede ser una dirección interna si tu servidor está tras un balanceador de carga o algo como NGINX. Este ajuste controla qué dirección IP y puerto quieres que Varnish escuche y vigile.

Una vez echo lo anterior edita el archivo /etc/varnish/default.vcl, que debería ya existir, con mucho de su contenido comentado (no activo). Empiezaremos por cambiar el backend default.

backend default {
	.host = “127.0.0.1”;&lt;/p&gt;
	.port = “8080”;&lt;/p&gt;
}

Ahora Varnish ya sabe que Apache está escuchando el puerto 8080 y la interfaz de localhost, para que podamos empezar a usar las funciones. La mayoría del trabajo se  hará con vcl_recv y vcl_fetch, y si no llamas a una acción en esta subrutina y Varnish llega al final, ejecutará el código que encuentre en el archivo default.vcl.

Note: no cachees nunca wp_admin, wp_login, o rutas similares.

Así es como trabaja – las 4 básicas subrutinas de tu configuración de Varnish que necesitas para gestionar peticiones serán:

sub vcl_recv

Esta llamada se hace al comienzo de una petición, y le dice a Varnish qué hacer con esa petición en concreto: si tiene que servirla, cómo servirla, y qué respaldo usar.

Varnish recibe una petición de tu navegador, y entonces vcl_recv decide hacer una de 3 costs con ella: vcl_hash, vcl_pass, y vcl_pipe (ahora lo explico). Puedes cambiar la petición si quieres, alterar las cookies o quitar la cabecera de la petición.

sub vcl_fetch

A vcl_fetch se la llama después de que se haya recuperado un documento con éxito. Usas esto para alterar las cabeceras de respuesta, lanzar el procesamiento ESI o para tratar de alternar entre servidores de respaldo si falla la petición.

El objeto solicitado, req, está todavía disponible, y ahí también  hay una respuesta de respaldo, beresp, que contiene las cabeceras HTTP del respaldo.

sub vcl_hash

Puedes llamar al hash_data del dato que quieras añadir al hash. Esta subrutina puede terminar con una llamada a return() con una de estas keywords: hash o proceed.

sub vcl_deliver

Llamas a esto antes de que el objeto cacheado se entregue al cliente. Esto puede terminar con deliver, error code, o restart. Deliver entrega el objeto al cliente, error devuelve el código de error específico al cliente y abandona la petición, restart reiniciará la transacción e incrementará el contador de reinicio.

Acciones

Hay ciertas acciones que puedes realizar en cada subrutina cuando personalizas Varnish:

pass

Pasa la petición y su consiguiente respuesta hacia el servidor de respaldo, sin cachear. Puedes llamar a pass tanto en vcl_recv como en vcl_fetch.

lookup

Se hace la petición desde vcl_recv para entregar contenido desde la cache aunque la petición indique que debe pasarse la misma. Puedes llamar a lookup desde vcl_fetch.

pipe

Desde vcl_recv, pipe cortocircuita al cliente y las conexiones de respaldo, y Varnish simplemente se queda ahí pasando los datos a un lado y a otro, registrando los datos, así que los registros serán incompletos. Ten cuidado ya que un cliente HTTP 1.1 puede enviar varias peticiones en la misma conexión, y así podrías hacer que Varnish añada una cabecera “Connection:close” antes de hacer la llamada a la pila de conexiones.

deliver

Entrega el objeto cacheado al cliente. Normalmente se le hace la llamada desde vcl_fetch.

esi

Hace un proceso ESI del documento adquirido.

Si quieres saber más sobre VCL no te pierdas este tutorial, que también contiene funciones que puedes realizar en tu sitio.

Configuraciones de ejemplo

Espero que estés aprendiendo algo (o mucho) de Varnish, pero la mejor manera de empezar a jugar con el es ver algunos ficheros de configuración de ejemplo.

La web de la comunidad de Varnish tiene una enorme colección de configuraciones de ejemplo, que son un buen sitio para empezar a hacer las tuyas. Incluso hay algunas configuraciones de ejemplo estupendas para WordPress de fetch y receive en Github.

Creo que llegado este punto huelga decir que Varnish es muy personalizable, y que puede hacer maravillas para cualquier instalación WordPress, especialmente las de alto tráfico. También, hay que reconocerlo, tampoco es para cualquiera, al menos hay que tener conocimientos de conexión con servidores mediante Linux.

Lo mejor es que, con poco esfuerzo y gratis, puedes configurar una cache realmente potente con Varnish, basándote en los permisos de usuario, en el tipo de usuario o lo que se te ocurra.

Si quieres más pruebas del poder de Varnish, no solo Ayuda WordPress lo usa, también Facebook, y creo que no hay mejor prueba de web de alto tráfico que esta tremenda red social ¿no crees?.

Plugins WordPress

Hay, como ya comenté hace días, plugins WordPress que te permiten configurar o gestionar el comportamiento de Varnish en WordPress, los que encontrarás serán estos:

Bueno que ¿te animas a probar Varnish o ya lo has usado?

Eliminar los atributos de ancho y alto del cargador de archivos WordPress

Pensarás que es una chorrada pero no, no es ninguna tontería, y te lo voy a explicar … si es que quieres estar al día claro. Si eres de los antiguos y no quieres progresar pasa de esta entrada.

Como ya sabrás, al insertar una imagen desde el cargador de archivos en el editor de WordPress se añaden automáticamente los atributos HTML width y height que indican el tamaño en el que se mostrará la imagen en tu tema activo, para eso, para que se adapte al ancho del tema y no quede horrible, pero esto ya lo sabías ¿no?.

Pues bien, esto ya es cosa antigua …

Con los nuevos diseños adaptables (o como se les denomina en inglés “responsive“), que se adaptan al navegador e incluso dispositivo desde el que se está visualizando una web, no tiene sentido definir atributos fijos de ancho y alto de imágenes, pues el tema se adaptará, como todos los elementos del contenido, al tamaño del dispositivo lector, sea este un ordenador, un smartphone o un iPad, mola ¿eh?.

¿Entiendes ya porque es posible que sea interesante eliminar – por defecto – los atributos width y height que el cargador de archivos inserta en el editor?. Pues eso, que si usas un tema con diseño adaptable no necesitas algo como esto:

<img src="ruta/a/tu/imagen" width="500" height="600" class="aligncenter size-full" alt="" title="">

Para eliminar por defecto los atributos que te sobrarán en un diseño adaptable sólo tienes que añadir el siguiente código al archivo functions.php de tu tema:

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;
}

Guardas y ya está. La próxima vez que insertes una imagen en tu editor ya no añadirá los atributos width y height, que de eso ya se ocupará tu tema adaptable (o “responsive“, como prefieras llamarlo)

Establecer varias imágenes destacadas a la vez

A mi me pasó, así que ¿por qué no te ha podido pasar a ti?. Me refiero a que la utilidad de mostrar imágenes destacadas, la función post-thumbnails disponible desde WordPress 2.9 está muy bien pero si tu tema anterior no las soportaba o no las usabas ¿a que es un coñazo añadir imágenes destacadas una a una a las viejas entradas?.

Pues la solución es sencilla … 

En vez de ir editando cada entrada y definiendo una imagen destacada para cada una ¡por fin vas a sacar utilidad a la pantalla de la librería multimedia!, si, esa pantalla, la gran desconocida, casi inútil la mayor parte del tiempo.

Lo primero que tienes que hacer es instalar y activar este plugin, luego te pasas por la Librería Multimedia y, bajo cada imagen, tendrás un nuevo enlace para usarla como destacada para la entrada a la que está asociada (en la que se adjuntó).

Así de sencillo, rápido y efectivo. Vamos, como todo en WordPress.