Como saber el modelo de kindle

Para este tutorial vengo con una simple, pero muy solicitada cuestión: Cómo saber que modelo de Amazon Kindle tengo.

En algunas ocasiones, tendrás que actualizar el software o simplemente buscar algún accesorio o funda y tendrás que saber que modelo de Kindle tienes.  Esto es algo que me ha pasado a mi. Me he compré un Kindle hace tiempo (más de 4 años) y la verdad que ni recordaba que versión era.

También te recuerdo, que Amazon tiene el programa de Unlimited, con cientos de ebooks gratuitos (y de pago, claro), te dejo el enlace para que le eches un ojo –> Buscar en amazon ebooks gratis

Volviendo al número de modelo. La manera más sencilla es buscarlo por número de serie, te doy todos los detalles a continuación:

Obtener el número de serie:

  1. En el Kindle, presionar el botón Home > Listado de libros
  2. Presionar el botón Menu y elige la opción “Configuración”
  3. Buscar en el menú de “Información del dispositivo”
  4. Verás un número con 16 caracteres, ese es el número de serie.

Determinar el modelo a partir del número de serie

Del número de serie obtén los primeros  4 caracteres. A continuación del siguiente listado busca la referencia para obtener el modelo:

  • Kindle (2007): Booo
  • Kindle 2 (2009): B002, B003
  • Kindle DX (2010): B004, B005, B009
  • Kindle Keyboard (2010): B006, B008, B00A
  • Kindle 4 (2011): B00E, B023, 9023
  • Kindle 5 / Touch (2012): B00F, B010, B011, B012
  • Kindle Paperwhite (2012): B024, B01B, B01C, B01D, B01F, B020
  • Kindle Paperwhite 2 (2013): B0D4, 90D4, B0D5, 90D5, B0D6, 90D6, B0D7, 90D7, B0D8, 90D8, B0F2, 90F2, B017, 9017, B060, 9060, B062, 9062, B05F, 905F
  • Kindle 7 (2014): B001, B0C6, 90C6, B0DD, 90DD
  • Kindle Voyage (2014): B00I, B013, B053, B054
  • Kindle Paperwhite 3 (2015): G090
  • Kindle 8: B018
  • Kindle Oasis: G0B0G

Si te falta algún número de modelo no dudes en buscar en el listado completo en la fuente original.

Referencia oficial de Amazon Kindle: https://amzn.to/3rtWdMK

BONUS TRACK

Parecerá algo evidente, pero si o sí pon una funda a tu Kindle. Más de una me ha salvado el lector. Tienes cantidad de fundas, desde más baratas a más caras de piel originales de Amazon, eso ya es tu decisión, pero sin duda debes cubrirlo, te dejo el listado de las: fundas más relevantes del momento: https://amzn.to/3pTfu9X

Error CORS en Google Cloud Storage

Cómo solventar el error de CORS en Google Cloud Storage.

Permisos del bucket y objetos

Antes de nada revisa que el bucket y el/los fichero/s que quieres acceder son públicos. Para ello en el bucket y objetos tienes que indicar el permiso de «allUsers» y darle permisos de lectura.

Te tendrá que aparecer en el Google Cloud storage algo como lo siguiente:

Ejecutar gsutil para establecer permisos de CORS

Después tienes que ejecutar un comando de gsutil al que le tendrás que pasar un fichero de configuración. Lo primero crea el fichero y guarda la configuración que necesites.

Crea el fichero:
[code]
vim cors-json-file.json
[/code]

Establece la configuración:
Nota: reemplaza el dominio por el que necesites en tu caso.
[code]
[
{
"origin": [
"https://*.pedroventura.com"
],
"responseHeader": [
"Content-Type"
],
"method": [
"GET"
],
"maxAgeSeconds": 3600
}
]
[/code]

Por último ejecuta el siguiente comando para setear la configuración de CORS sobre tu bucket.
NOTA: cambia «blogpv» por el nombre de tu bucket:

[code]
gsutil cors set cors-json-file.json gs://blogpv
[/code]

Te tendrá que aparecer un mensaje por consola

Puedes ejecutar la siguiente función JS desde la consola de Chrome para validar que recibes bien el objeto desde Google Cloud Storage y que te funciona finalmente ya no tienes errores por las CORS.
[code]
fetch(‘https://storage.googleapis.com/blogpv/sample.json’)
.then(response => response.json())
.then(json => console.log(json))
[/code]

Puedes revisar la documentación de Google Cloud Storage y CORS en el siguiente enlace: https://cloud.google.com/storage/docs/configuring-cors#configure-cors-gsutil

script para reiniciar un proceso en linux si esta parado

En este artículo voy a explicar como crear un script en linux con el que podemos reiniciar o arrancar un proceso que se ha parado.

Esto es una solución cuando ya se ha dado el problema de que un proceso se para.

En mi caso he aplicado este script a una máquina donde está ejecutándose memcache, pero por alguna razón que todavía no he determinado, memcached se para, pero es muy importante que memcached esté siempre corriendo porque las sessiones de usuario se guardan en memcache, así como cierta información que tiene que estar cacheada.

Puedes usar la base de este script para adaptarlo al servicio que sea.

Crear el script para reiniciar el proceso

En una carpeta donde guardes todos los shell script crea el archivo check_proceso.sh

En este ejemplo voy a definir que el servicio que quiero reiniciar es memcached pero puede ser cualquier otro.

[code]

#!/bin/bash
RESTART="/etc/init.d/memcached restart"
PGREP="/usr/bin/pgrep"
MEMCACHED="memcached"
# buscamos que exista el proceso
$PGREP ${MEMCACHED}
# sino existe id de proceso y el comando anterior devuelve 0
if [ $? -ne 0 ]
then
# restablecemos memcached y enviamos un email
$RESTART | mail -s "Memcache Restart en bbdd4 `date "+%c"`" support@pedroventura.com
fi
[/code]

Configurar el script en un cron

Ahora hay que crear una tarea programada para que ejecute de manera constante el script, para ello lo metemos en el crontab.
El cron hay que configurarlo como root porque el script reinicia el proceso y necesita tener privilegios de root.

Ejecuta el siguiente comando
[code]
crontab -e
[/code]

Esto abrirá el editor de texto por defecto. Añade la tarea. En este caso vamos a definir que se ejecute cada 5 minutos.
[code]
*/5 * * * * /bin/sh /root/shell_scripts/check_proceso.sh
[/code]

Guarda los cambios y ya podrás salir.

Si tienes dudas o preguntas no dudes en dejar un comentario

Como personalizar url acortada con tu propio dominio usando bitly

Hace mucho tiempo que no escribo nada en el blog pero hoy vengo con un interesante artículo para personalizar url acortada con tu propio dominio usando el propio servicio de bitly, y la verdad que es algo que no he visto mucho. Además para aquellos que no tienen muchos conocimientos de tecnología o programación con este artículo están de suerte porque es bastante sencillo ya que no lleva ningún desarrollo, ni hay que programar nada, tan sólo hay que llevar a cabo unos cuantos pasos.

 

Requisitos para crear acortador url

Que necesitamos antes de empezar.

  • Como el artículo indica, vamos a personalizar nuestro propio dominio para acortar la url, como es obvio tendréis que tener contratado y disponible un dominio. Proveedores de dominio hay muchísimos: Godaddy, PiensaSolutions, Arsys, Hostalia, etc… existen muchísimos el que más os guste. Es interesante que el dominio sea lo más corto posible y/o se identifique con vuestra marca o dominio principal.
    Para mi caso, he escogido el dominio pedroventura.es. Es cierto que el dominio no es corto pero mi objetivo es crear identidad cuando se comparten los artículos del blog en redes sociales.
  • Crear una cuenta en https://bitly.com/. Esta es la parte más interesante. Toda la gestión del acortador de url y estadísticas nos la proveerá el servicio de bitly. Esto es algo que ya hace por sí mismo con los enlaces de bitly, pero lo bueno es que podemos configurar para que use nuestro dominio. Esto es genial porque no tendremos que hacer ningún desarrollo, ni descargar ningún open source para luego instalarlo en un servidor, … nada. No haremos nada más que usar el servicio de bitly personalizando nuestro dominio. Es fantástico!

Objetivo: url acortada y personalizada

  • Tener una url acortada y personalizada con tu propio dominio, por ejemplo: http://pedroventura.es/186DSGd
  • Esto servirá para generar marca e identidad en los enlaces que se compartan en redes sociales de tu blog, web o portal.

Paso a paso. 

A priori os parecerá un poco denso y pesado, con muchos pasos pero la verdad que lo haréis en 2 minutos.

  • Voy a omitir el paso que tendréis que hacer para daros de alta en bitly, porque esto es un formulario de registro y esto es algo trivial, daros de alta, verificar vuestro email y seguir los pasos que os indiquen.
  • Una vez dentro, en la parte superior donde aparece el nombre de usuario con el que os habéis registrado pinchar en settings.
  • Pinchar en la pestaña «Advanced» y luego en la sección «Custom Short Domain» pinchar en «Personal».
    Si eres una empresa deberás pinchar en «Business» y supongo que tendrás que seguir otros pasos porque a lo mejor tiene algún tipo de servicio diferente para empresas  o simplemente es de pago.
  • Cuando pinches en «Personal» Te llevará al siguiente formulario.

    Introduce el nombre de dominio que has contratado anteriormente. Al pinchar en «Add», te llevará a la siguiente pantalla. Todavía no le deis a verificar, aunque bueno si le dais tampoco va a pasar nada.
  • Aquí tendremos que hacer un paso fuera de bitly, es el paso de agregar el registro DNS en nuestro proveedor de dominio.Bitly nos está diciendo que apuntemos el dominio a una ip determinada. En mi caso me está mostrando esto.
  • Pues bien, iréis al panel de control de nuestro proveedor de dominio, y aquí como cada uno tendrá el suyo pues tendréis que buscar la forma de hacerlo. La finalidad es la misma, los pasos para hacerlo pueden ser diferentes en cada web de vuestro proveedor de dominio.
    La clave es agregar un registro DNS de tipo A, que apunte vuestro dominio a la ip que os diga bitly.  No es nada complejo, seguir los pasos que tengáis que hacer o sino tenéis ni idea enviar un email a soporte de vuestro proveedor de dominio y que os ayuden. Después de agregar el registro DNS a mi me ha quedado de la siguiente manera:
  • Tras agregar el registro DNS, volvemos a bitly y pulsamos el botón «Verify» que habíamos dejado en el formulario anterior, aunque si le habéis pulsado antes tampoco pasa nada.
  • Esto tardará unas horas en ser verificado, pero cuando todo esté ok tendréis que ver algo similar a esto:

    En la pantalla principal de la pestaña de «Advanced» aparece esto:
  • En la sección «Custom Short Domain Root Redirect» tendréis que indicar donde queréis que redirija el dominio base del acortador. En mi caso el dominio base para acortar redirige a este blog.
  • Listo!! Ya tendréis vuestro acortador de urls personalizado con vuestro dominio 🙂

Estadísticas

Además de lo bueno de tener tu propio dominio personalizado, tienes Estadísticas! Dentro de tu cuenta de bitly pincha en la opción «Your stuff», te aparecerá un submenú, pincha en «stats». Voila!  Sin nada de esfuerzo, ni desarrollos complejos, tenemos un sistema para trackear las urls que se comparten de nuestro proyecto web, y encima con nuestro dominio personalizado.

Un truco para ver las estadísticas de un enlace de bitly es agregar (el símbolo mas) al final de la url acortada, por ejemplo: http://pedroventura.es/186DSGd+

 

Espero que os haga gustado. No olvidéis compartirlo, como no cuando lo hagáis aparecerá mi url acortada de este artículo 🙂

 

cuantas veces se ha compartido un enlace

Este artículo recopila las urls con la llamada a las api y como se debe realizar la petición para obtener el número de veces que se ha compartido un enlace en una red social.

Esta es la base para que cualquier programador pueda usar para hacer un curl o lo que sea en cada respectivo lenguaje para obtener esta información sobre la viralidad de una url.

En Facebook

[code]
http://graph.facebook.com/http://www.pedroventura.com
[/code]

respuesta

[code]
{
"id": "http://www.pedroventura.com",
"shares": 5
}
[/code]

En Google Plus

POST URL:
[code]
https://clients6.google.com/rpc?key=YOUR_API_KEY
[/code]

POST body:
[code]
[{
"method":"pos.plusones.get",
"id":"p",
"params":{
"nolog":true,
"id":"http://www.pedroventura.com",
"source":"widget",
"userId":"@viewer",
"groupId":"@self"
},
"jsonrpc":"2.0",
"key":"p",
"apiVersion":"v1"
}]

Returns

[code]
[{
"result": {
"kind": "pos#plusones",
"id": "http://www.pedroventura.com",
"isSetByViewer": false,
"metadata": {
"type": "URL",
"globalCounts": {
"count": 387
}
}
} ,
"id": "p"
}]
[/code]

En Twitter

[code]
https://cdn.api.twitter.com/1/urls/count.json?url=http://www.pedroventura.com
[/code]

respuesta

[code]
{"count":13,"url":"http:\/\/www.pedroventura.com\/"}
[/code]

En Pinterest

[code]
http://api.pinterest.com/v1/urls/count.json?callback=&url=http://www.pedroventura.com
[/code]

respuesta

[code]
({"count": 0, "url": "http://www.pedroventura.com"})
[/code]

:S que mal rollo jeje

En Linkedin

[code]
http://www.linkedin.com/countserv/count/share?url=http://www.pedroventura.com&format=json
[/code]

respuesta
[code]
{"count":0,"fCnt":"0","fCntPlusOne":"1","url":"http:\/\/www.pedroventura.com"}
[/code]

compartir carpetas de windows con maquina virtual linux en virtualbox

En este tutorial voy a explicar como dar acceso en una máquina virtual con linux, a una carpeta que tenemos en windows, siendo windows el sistema operativo principal.

Esto se llevará a cabo con VirtualBox y daré por hecho que el lector lo tiene instalado, ha creado una máquina virtual con un linux y lo tiene funcionando correctamente con los Guest Additions.

Lectura Recomendada

Definir en Windows la carpeta a compartir

  • En VirtualBox pincha en el botón de configuración de tu máquina virtual, es el botón con la rueda amarilla con muescas.
  • Selecciona la última opción: Carpetas compartidas. En las opciones de configuración, pincha en el icono de agregar carpeta compartida. Esto abrirá una ventana nueva.

  • Selecciona la ruta de la carpeta que quieres compartir.
  • Asigna un nombre, a modo de identificador. Este nombre se usará como referencia en la máquina virtual.
  • (opcional) Selecciona hacer permanente y automontar. Con esto nos ahorraremos algunos pasos posteriores.

Al final de este proceso deberás tener algo similar a esto:

Habilitar la carpeta compartida en la máquina virtual con linux

Si NO hemos seleccionado la opción de automontar

Crearemos la carpeta donde queremos establecer que se comparta la información. Por ejemplo yo he creado la carpeta «trabajo» en la ruta /media/trabajo con el siguiente comando.


sudo mkdir /media/trabajo

Montaremos el punto de acceso con la carpeta compartida con el siguiente comando:


sudo mount -t vboxsf proyectos_web /media/trabajo

Para no tener que ejecutar este comando dada vez que arrancamos nuestra maquina virtual, podemos agregar la ejecución de este comando al arrancar linux.

Editamos el archivo /etc/init.d/rc.local


vim /etc/init.d/rc.local

y agregamos el comando para montar la carpeta compartida


sudo mount -t vboxsf proyectos_web /media/trabajo

Si has seleccionado la opción de automontar

No tendrás que hacer nada de lo anterior.

Yo he configurado ambas opciones, y en mi carpeta /media veo lo siguiente:

Donde la carpeta compartida sf_proyectos_web es la carpeta creada con la opción de automontar directamente de virtualbox. Y la carpeta compartida trabajo la carpeta donde he configurado que se monte en el momento de arrancar linux.

Si te ha gustado este tutorial y/o te ha ayudado, no olvides compartirlo!

Cualquier duda o pregunta, deja tu comentario.

Usas CakePHP? Comprueba si tu código cumple las convenciones

Si usas CakePHP es muy recomendable que compruebes si tu código cumple los estándares y convenciones definidos por CakePHP, que puedes ver en su página oficial: convenciones de CakePHP.
Esto se puede hacer con un sniffer de código, el cual ha desarrollado el equipo de CakePHP.

A continuación indico como integrarlo tanto si tienes un entorno de desarrollo en Linux como en Windows.

Si tienes un entorno de desarrollo en Linux

Tienes que ejecutar.
[code]
pear channel-discover pear.cakephp.org
pear install cakephp/CakePHP_CodeSniffer
[/code]

y para usarlo
[code]
phpcs –standard=CakePHP /path/to/code
[/code]

La documentación oficial la puedes ver en el repositorio oficial de CakePHP https://github.com/cakephp/cakephp-codesniffer

Si tienes un entorno de desarrollo en Windows con Xampp

Saca una consola de windows, en Inicio > Ejecutar o buscar > teclea cmd y pincha en el icono de la consola

Ubícate en la carpeta php dentro de xampp. Usa los comandos cd y dir de windows, para moverte por las carpetas y mostrar el contenido respectivamente.

Ejecuta el siguiente comando
[code]
C:\xampp\\php>pear.bat channel-discover pear.cakephp.org
[/code]

Si ya lo tienes instalado te aparecerá un mensaje similar a este:
Channel «pear.cakephp.org» is already initialized

Ejemplo visual de este proceso.

Instala el sniffer

Nota: he agregado –alldeps para que en caso de que no tengáis el canal de pear.phpunit.de el cual se necesita para instalar el sniffer de CakePHP, se instale automáticamente.

Ubicandos en la misma carpeta de xampp/php ejecutar

[code]
C:\xampp\\php>phpcs.bat –standard=CakePHP /ruta/proyecto/cakephp/
[/code]

Como se ve en la imagen hay una lista de errores y warnings y la ubicación de los mismos, ahora habría que modificar el código para que éste cumpla al 100% los estándares de CakePHP.

Softwares de optimización de PC

Para quienes no conocen, existen softwares que pueden optimizar y mejorar el funcionamiento de nuestra computadora de manera extraordinaria. Recomendado sobre todo para aquellos con PCs lentas, ya que se encarga de llevar el sistema a su mejor punto, realizando ciertos trabajos internos de manteamiento e incluso desactivando algunas cuestiones que no se utilizan en el equipo para que todo funcione más correctamente y podamos sacarle el provecho que queremos a nuestra maquina. Si bien hay una enorme cantidad de programas, a mi parecer hay dos que se encuentran en la punta del ranking y en esta oportunidad estaremos hablando de ellos dándoles una pequeña reseña e invitándolos a probarlos.

TuneUp para renovar tu PC

El primer software de optimización de PC del que vamos a hablar en este articulo es el conocido TuneUp. Este programa se encarga de optimizar y limpiar absolutamente todo el sistema para incrementar su funcionamiento y que tu computadora parezca casi como nueva. Además de mejorar el rendimiento de tu PC en general, también se encargará de estabilizarla y volverla mucho más veloz. Incluso, si nos atrevemos, podemos aprovechar el programa para personalizar algunos detalles del sistema e incluso estéticos como el fondo de escritorio y los colores de la interfaz en general.

En un primer momento, al instalar el TuneUp en nuestra PC, nos pedirá realizar un análisis general para ver en qué estado se encuentra el sistema. Cuando esto finalice, podremos ver el listado con todos los problemas, y las acciones que podemos tomar a continuación para repararlos. En la lista mencionada nos toparemos con lo siguiente:

Limpiar registro.
Desfragmentar registro.
Eliminar lox accesos directos defectuosos.
Borrar  losarchivos temporales.
Optimizacion de inicio y apagado del sistema.
Desfragmentacion de discos duros.

Una vez veamos esto, tendremos la opción de repararlo completo de manera automática, dejarlo para después, e incluso seleccionar cuales de esos aspectos queremos arreglar, sin la necesidad de tocar todos los puntos. Además del analisis y limpieza general que ya mencionamos, este programa tiene otras opciones como el «mantenimiento en un click» que podemos utilizarlo de vez en cuando para mantener todo en orden. También tiene aceleradores de internet, desinstaladores para eliminar programas no deseados, entre muchas otras cosas que encontraremos explorando el programa y que seguramente resultarán plenamente útiles para tu sistema.

Advanced Systemcare

El otro programa predilecto para todo lo que sea optimización y limpieza de sistema es Advanced Systemcare, personalmente mi preferido. Nuevamente, al igual que el anterior, se ocupa de mejorar el rendimiento de la PC. Si se preguntan por qué su computadora no funciona igual que cuando era nueva, lo cierto es que con el uso y el tiempo, la misma va llenándose de programas, aplicaciones que se inician a la par del sistema y realentizan el funcionamiento, procesos innecesarios, y tanto el registro como el disco duro se llenan de información basura innecesaria.

Sus utilidades y funciones son muy similares a las de TuneUp, incluyendo limpiezas de registro y desfragmentación. Por otro lado, tiene algunas especiales que lo hacen destacar e incluso puede que lo dejen un poco más arriba que el anterior. En primer lugar, este software tiene la opción de limpieza de malwares, para evitar virus y espías alojados en tu computadora. Además de esto, también nos permite buscar por agujeros de seguridad en la PC para que no existan vulnerabilidades que dejen que los intrusos pasen sin pedir permiso.

Finalmente, Advanced Systemcare nos ofrece la opción de turbo, para acelerar la PC de manera rapida y efectiva. Podemos elegir el modo trabajo o el modo juego, dependiendo de lo que queramos hacer en ese momento. ¿Cómo funciona esto? El software se encarga de cerrar aquellos procesos que no sean necesarios en ese momento y así se logra un mejor funcionamiento del sistema.

Consejos para tener una web segura en PHP

Cuando estamos desarrollando una web debemos poner mucho cuidado y atención en la seguridad de la misma. Debemos ponérselo difícil, por no decir imposible, a los hackers que quieran atacar nuestra web mediante la inserción ó modificación del código PHP.

El uso  de PHP como lenguaje de programación web se está extendiendo día a dia, los dominios que lo emplean se cuentan por millones. Como cualquier otro lenguaje de programación web, PHP, es tan seguro o inseguro como nosotros queramos. Todo depende de las buenas o malas prácticas que realicemos durante el desarrollo del sitio web.

Para evitar, en la medida de lo posible, cualquier ataque a través del código de la web. Existen una  serie de consejos que podemos implementar cuando estamos escribiendo el código de la web, son las siguientes:

1.- Ocultar errores, el uso de display_errors durante la fase de desarrollo  es muy útil para detectar problemas y fallos. Pero una vez finalizada dicha fase debemos deshabilitarla para que ningún hacker pueda obtener información vital del código de nuestra web como rutas, configuraciones y extensiones.

2.- Utilización de funciones de validación, PHP cuenta con numerosas funciones de validación de variables, utilizadlas para verificar que los datos almacenados en ellas son correctos. Así evitaremos cualquier tipo de ataque y ciertos errores de programación que empañan nuestro desarrollo.

3.- Inicialización de variables, cada vez que creemos una variable debemos inicializarla con un valor, de esta forma tan sencilla evitaremos que los hacker utilicen una variable no inicializada para atacar nuestra web sin compasión.

4.- Limpiar inputs, para evitar los ataques mediante XSS o SQL injection en nuestra web, debemos limpiar los inputs  más habituales( $_POST, $_GET,$_SERVER, $_COOKIE ,$_REQUEST), ya que los piratas informáticos suelen utilizarlos para obtener los datos que contienen e incluso pueden alterar las aplicaciones mediante ataques XSS o SQL injection.

5.- Funciones de escape, empleándolas evitaremos en gran medida los ataques mediante SQL Injection, unos de las formas más habituales que usan los hackers para atacar las web desarrolladas en PHP. Los ataques mediante SQL Injection se basan en aprovechar alguna brecha en nuestro código para acceder a la información guardada en la base de datos de la web, como claves de acceso, a través de una consulta SQL.

Aplicando estos cinco sencillos consejos, conseguiremos que el código PHP de una web sea un poco más seguro frente a un posible ataque de hackers. Algunos de los frameworks de desarrollo mas empleados por los desarrolladores, como ZEND o CakePHP, nos ayudan a aplicar estos consejos de una forma rápida y sencilla.

De cualquier forma, si dedicamos un poco de tiempo a la seguridad de nuestro código evitaremos en un futuro graves problemas, mejor prevenir que no lamentarnos

Redirecciones en WordPress: Consejos y plugins

Las ultimas actualizaciones de WordPress han permitido a los desarrolladores personalizar sus sitios web muy rápidamente. Ahora Es cada vez mas sencillo actualizar las áreas de tu tema, sustituir o reemplazar los widgets, e incluso escribir tus propias funciones con PHP. La escalabilidad está creciendo muchísimo y un area importante es la creación de url permanentes que son óptimas para SEO.

Entender WP_Rewrite

Si estás familiarizado con mod_rewrite en los servidores de Apache entonces no vas a tener problemas con la sintaxis de reescritura de WordPress y con las expresiones regulares.

El sistema de redirecciones se sigue basando en .htacces pero todoas las reglas se codifican a través de PHP. En realidad, esto hace que el proceso sea un poco más fácil ya que tenemos más control sobre la escritura de nuestra propia URL.

No esta mal echar una ojeada a http://codex.wordpress.org/Class_Reference/WP_Rewrite ya que tiene mucha información sobre el tema. Incluso hay pequeños ejemplos que pueden hacer referencia a hacer todo más fácil de entender. La mayoría del código se puede escribir directamente en el archivo functions.php de tu tema.

Contenido de $Wp_rewrite->Rules

Al declarar la clase $wp_rewrite como global, tenemos acceso a todos los datos internos. Cuando vas a agregar tus propias reglas de estos se añaden en un array() con el nombre $wp_rewrite->rules. Es importante recordar esta variable, ya que es probable que tengas que hacer referencia a los datos varias veces durante el desarrollo.

[code lang=»PHP»]
<?php
global $wp_rewrite;
print_r($wp_rewrite->rules);
?>
[/code]

Incluyendo en anterior fragmento de código en el archivo page.php de tu tema, verás como salida los datos que contiene el array() con las reglas de redirección de $wp_rewrite->rules.  Se pueden observar las reglas de redirección con los archivos a los que hacen referencia.

Por ejemplo, podremos ver un redirección para las urls de las categorias

[code]

[category/(.+?)/?$] => index.php?category_name=$matches[1]

[/code]

La parte de la izquierda con los paréntesis es la regla de redirección de Apache por la que buscamos. Esta regla buscará las urls que empiecen con la cadena «category» seguido de cualquier cadena de caracteres. Si la url coincide con la regla el servidor conoce que tiene que referenciarse a index.php?category_name=  y se le envía como variable el valor obtenido en la regla de redirección de Apache que hemos indicado al principio.

Configurando Enlaces permanentes

La clase $wp_rewrite tiene demasiado contenido y funcionalidad como para dedicarle un artículo entero, en éste articulo comentaré algunas técnicas y funcionalidades para usar esta clase.

Muchas propiedades se puede hacer referencia, por ejemplo con, $wp_rewrite->category_base o $wp_rewrite->author_base que se pueden usar para generar la estructura base para las URL de éstas páginas. Pero aparte de usar la configuración por defecto de WP también podemos crear nuestras propias reglas.

Sobreescribiendo la base de autor

Desde el dashboard, en el menú Ajustes > Enlaces permanentes, o del inglés Permalinks, se pueden resetear y configurar la base de las categorias o tags. Siembargo no hay ninguna opción para configurar o cambiar la base de los enlaces de autor.

Para ello podemos usar la función de WordPress add_rewrite_rule() que viene integrada en el codigo para agregar funcionalidad o configuración adicional. En caso que en vez de /author, que es la url base por defecto, queremos usar /autor, en español. También he incluido las redirecciones para las páginas de autor y los feeds RSS. Deberá añadir el siguiente fragmento de código al archivo functions.php de tu tema

[code lang=»PHP»]
add_action( ‘init’, ‘add_author_rules’ );
function add_author_rules() {
add_rewrite_rule(
"autor/([^/]+)/?",
"index.php?author_name=$matches[1]",
"top");

add_rewrite_rule(
"autor/([^/]+)/page/?([0-9]{1,})/?",
"index.php?author_name=$matches[1]&paged=$matches[2]",
"top");

add_rewrite_rule(
"autor/([^/]+)/(feed|rdf|rss|rss2|atom)/?",
"index.php?author_name=$matches[1]&feed=$matches[2]",
"top");

add_rewrite_rule(
"autor/([^/]+)/feed/(feed|rdf|rss|rss2|atom)/?",
"index.php?author_name=$matches[1]&feed=$matches[2]",
"top");
}
[/code]

Url Base Autor usando Generate_rewrite_rules

Writing for this method we will again need the global $wp_rewrite class. I’ve then setup a new variable named $new_rules which contains an associative array of data. My example code below just rewrites for the basic author page section.

Para esta técnica necesitaremos la clase global $wp_rewrite. En este caso tenemos una nueva variable llamada $new_rules que contiene un array asociativo. En el ejemplo reescribiremos las urls para la página básica de autor.

[code lang=»PHP»]
function generate_author_rewrite_rules() {
global $wp_rewrite;
$new_rules = array(
"autor/([^/]+)/?" => "index.php?author_name=".$wp_rewrite->preg_index(1)
);
$wp_rewrite->rules = $new_rules + $wp_rewrite->rules;
}

[/code]

Pero si queremos incluir multiples páginas o feeds RSS, tan sólo tendremos que incluir las reglas en el array.
El siguiente ejemplo tambien iría en functions.php de tu tema

[code lang=»PHP»]
function generate_author_rewrite_rules() {
global $wp_rewrite;
$new_rules = array(
"autor/([^/]+)/?" => "index.php?author_name=".$wp_rewrite->preg_index(1),
"autor/([^/]+)/page/?([0-9]{1,})/?" => "index.php?author_name=".$wp_rewrite->preg_index(1)."&paged=".$wp_rewrite->preg_index(2),
"autor/([^/]+)/(feed|rdf|rss|rss2|atom)/?" => "index.php?author_name=".$wp_rewrite->preg_index(1)."&feed=".$wp_rewrite->preg_index(2),
"autor/([^/]+)/feed/(feed|rdf|rss|rss2|atom)/?" => "index.php?author_name=".$wp_rewrite->preg_index(1)."&feed=".$wp_rewrite->preg_index(2)
);
$wp_rewrite->rules = $new_rules + $wp_rewrite->rules;
}

[/code]

Nota: Para que los técnicas anteriores puedan funcionar correctamente se debe refrescar las reglas de redirección originales. Se tiene que hacer esto, siempre que se hagan cambios en estas funciones.

Refrescar o Flushing las reglas de redirección

Cuando se hace una actualización de las reglas de redirección en el código, los cambios no son inmediatos. Tienes que refrescar las reglas de redirecciones del .htaccess, para que tu nuevo código sea añadido. Sin embargo realizar esta llamada en cada página es algo que puede relentizar y lo mejor es hacer la redireccion a nivel de apache con .htaccess.

Un método para asegurarnos que nuestros cambios se guardan en .htaccess mediante la llamada a $wp_rewrite->flush_rules(); es acceder a la sección de enlaces permantes del panel de administración. Y darle al botón de guardar, esto actualizará todas las reglas del blog.

Usar Reglas que no son de WordPress

Dentro de la clase $wp_rewrite hay unos cuantos propiedades, una de ellas es $wp_rewrite->non_wp_rules que contiene un array de redirecciones que no tienen que no implican al archivo index.php

Esto es usado normalmente en el desarrollo de plugins. Puedes crear una url especifica, por ejemplo, /calendario/octubre-2012 gestionada desde el backen de la web a través del plugin /wp-content/plugins/calendario_plugin/index.php.
Hay otros usos de estos array asociativos para personlizar reglas de redireccionamiento, mas allá de los plugins, más detalle a continuación.

Enmascarar los archivos de tu tema

Con esta técnica podemos crear otras urls que llamen a nuestros archivos, css, js o imágenes. De manera que podemos cambiar la url por defecto de éstos recursos que se encuentran en /wp-content/themes/mi_tema/. Esto lo podemos hacer para crear urls más elegantes o evitar que vean el nombre de nuestro tema.

[code lang=»PHP»]
add_action(‘generate_rewrite_rules’, ‘themes_dir_add_rewrites’);

function themes_dir_add_rewrites() {
$theme_name = next(explode(‘/themes/’, get_stylesheet_directory()));

global $wp_rewrite;
$new_non_wp_rules = array(
‘css/(.*)’ => ‘wp-content/themes/’. $theme_name . ‘/css/$1’,
‘js/(.*)’ => ‘wp-content/themes/’. $theme_name . ‘/js/$1’,
‘http://cdn1.pedroventura.com/wordpress-urls-rewrite/(.*)’ => ‘wp-content/themes/’. $theme_name . ‘/http://cdn1.pedroventura.com/wordpress-urls-rewrite/$1’,
);
$wp_rewrite->non_wp_rules += $new_non_wp_rules;
}
[/code]

Herramientas útiles

WP Htaccess Control

Este plugin tiene una configuración de reglas para hacer redirecciones a nuevas páginas. El plugin tiene su propio panel de control, donde puedes editar variables tales como la url base de autor, base para las páginas, e incluso escribir tus propias redirecciones en .htaccess para los más expertos.

Rewrite Rule Tester

Esto no es un plugin de WordPress, pero es una gran herramienta para tener en cuenta. Puedes copiar y pegar tus reglas de redireccionamiento y probarlas en tu web, sin necesidad de editar tu .htaccess. Este método esta bien para hacer debugin antes de hacer cambios en el .htaccess de produccion.