Apr 10

Hace tiempo escribí un post acerca de como usar FeedBurner para los feeds de un WordPress que se ha quedado algo obsoleto debido a algunos cambios en WordPress respecto a la URL de los feeds y a la compra de FeedBurner por parte de Google.

Si todavía crees que usar FeedBurner es una buena idea (yo nunca lo tuve claro) la forma más cómoda de configurarlo es modificando el archivo .htaccess, aunque también existen plugins específicos (por ejemplo el FD Feedburner Plugin).

Se trata de añadir lo siguiente al .htaccess:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_USER_AGENT} !FeedBurner [NC]
RewriteCond %{HTTP_USER_AGENT} !FeedValidator [NC]
RewriteRule ^feed/(.*)$ http://feeds2.feedburner.com/xxxxxx [R,L]
</IfModule>

Con lo anterior conseguimos que nuestro WordPress únicamente genere el feed para FeedBurner y que el resto de clientes (navegadores, arañas, etc.) sean redirigidos a la URL de FeedBurner.

Teóricamente este es el mejor método para usar FeedBurner ya que seguimos difundiendo la URL del feed original y así siempre podemos dejar de usar este servicio sin muchos inconvenientes. El problema está en que al haber la redirección muchos usuarios siguen el enlace del feed con el navegador y se suscriben a la URL del feed de FeedBurner… o sea que con el tiempo acabaremos con lectores suscritos a ambas URLs.

El método alternativo es modificar el theme de WordPress, o usar algún plugin, para difundir directamente la URL del feed de FeedBurner.

Proxy de Google

Si teníamos una cuenta en FeedBurner y la hemos migrado a Google recientemente, a parte del engorroso cambio de la URL del feed, quizás hemos notado que ahora la URL que difunde tu feed para cada post pasa por un proxy de Google.

En principio esto ya sucedía antes y el cambio únicamente es que ahora en lugar de pasar por feeds.feedburner.com pasa por feedproxy.google.com (aunque en mi caso antes de migrar la cuenta a Google no pasaba por ningún proxy, tengo caché, lo puedo demostrar :)

En cualquier caso si queremos desactivar completamente el proxy de Google hemos de cambiar la configuración de nuestro feed en FeedBurner. Concretamente se trata de desactivar la opción “Item link clicks” de la sección “TotalStats” dentro de la pestaña “Analize”. Con esto seguiremos teniendo estadísticas de número de lectores e ítems vistos (información más que suficiente) pero difundiremos siempre la URL original de cada post, algo muy recomendable para SEO (como bien nos explicaba Armonth hace tiempo).

Así es como debería quedar la configuración en FeedBurner:

FeedBurner snapshot

Tagged with:
Feb 21

Es un procedimiento muy sencillo que está perfectamente detallado en la documentación de WordPress aunque quizás faltan un par de puntos por explicar un poco mejor.

Si nuestra intención es hacer borrón y cuenta nueva con nuestro blog eliminando todos los archivos pero conservando la base de datos los pasos a seguir son los siguientes:

[1] Como siempre antes de empezar cualquier tarea parecida backup de todo. Incluso es buena idea montar el blog entero en otro sitio para después poder comparar el viejo con el nuevo.

[2] Desactivamos todos los plugins y seleccionamos el tema por defecto. Aunque en nuestro caso como tenemos intención de borrar todos los archivos el nuevo WordPress desactivará todo lo que no encuentre.

[3] Borramos todos los archivos anteriores. Si tenemos el wordpress mezclado con otras cosas el comando en cuestión es algo como:

$ rm -rf index.php license.txt readme.html wp-* xmlrpc.php

[4] Descomprimimos la última versión de WordPress en el mismo sitio donde teníamos la anterior.

[5] Editamos el nuevo wp-config.php y añadimos los datos de conexión y nombre de la BD.

[6] Comprobamos en qué codificación está trabajando nuestro WordPress. Por ejemplo con:

mysql> show create table wp_posts;

Nos fijamos en el CHARSET utilizado y definimos DB_CHARSET con el mismo valor. En el caso de ser “utf8” no tenemos que tocar nada pero si estamos con “latin1” es necesario indicarlo en wp-config.php con:

[php] define(‘DB_CHARSET’, ‘latin1’); [/php]

[7] Iniciamos el programa de actualización apuntando el navegador a la URL habitual del dashborad (p.e. http://tublog.es/wp-admin/)

[8] Automáticamente aparecerá un mensaje diciendo que debemos proceder con la actualización de la BD. Hacemos clic en “Siguiente” y cruzamos los dedos… si todo va bien te aparecerá algo como “Update successful”.

[9] WordPress casi actualizado!

Digo casi porque casi seguro vamos a necesitar realizar alguno de lo siguientes pasos adicionales:

  • Si habíamos subido archivos al WordPress utilizando su dashboard hemos de copiar la anterior carpeta wp-content/uploads a la nueva instalación.
  • Si trabajábamos con algún plugin para los tags debemos lanzar la importación manualmente desde el dashboard, por ejemplo en el caso del UTW desde “Herramientas” -> “Importar” -> “Ultimate Tag Warrior”.
  • Si ha pasado mucho tiempo desde la última actualización no es mala idea repasarse las opciones de configuración de WordPress y comprobar que todo está ok, especialmente la sección de Permalinks.
  • Como hemos empezado de nuevo en lo que a código PHP se refiere es necesario volver a instalar los plugins que echemos en falta y un tema que nos guste. Por supuesto descargando las últimas versiones de todo y no aprovechando nada del anterior WP para así sacar el máximo partido de las nuevas funcionalidades (en parte uno de los objetivos del procedimiento descrito en este post).
Tagged with:
Jun 15

Una cadena de enlaces es una buena forma de dar a conocer tu blog y conocer más blogs… a parte de conseguir más backlinks :) Veo en SEO Profesional que han empezado una cadena de enlaces que presento a continuación:

  1. Blog de Posicionamiento Web (SEO Profesional)
  2. Posicionamiento y Publicidad de Blogs (xzBlogs)
  3. Recursos Flash (Recursos Flash)
  4. Negocios electrónicos (Adsense Optimizado)
  5. Aprende A Ganar Dinero Facil En Internet (uLoVe-TeCh.com)
  6. Recursos para Webmasters (Zona Masters)
  7. Social Media Optimization (Buzz Director)
  8. Trucos y consejos para tu pc (SpamLoco)
  9. Windows, Seguridad e Internet (estarOffline.blogspot.com)
  10. Nikok (nikok.com)
  11. Programación PHP y Sistemas BSD (www.phpbsd.net)
  12. Noticias de Linux, tecnología y la web (blux20.blogspot.com)
  13. Todo sobre el motor (portal-coches.com)
  14. chexpirit (chexpirit.blogspot.com)
  15. Alberto García (blog de alberto666)
  16. Miguel Angel Gatón (miguelgaton.es)
  17. Informática Práctica. Tutoriales, trucos, diseño web… (Informática Práctica)
  18. Gadgets y Tecnología (LaGiga.com)
  19. Empresa, empleo y economía (blogoempresa.com)
  20. Actualidad Motor (actualidadmotor.com)
  21. Sinmiedo (sinmiedo.es)
  22. Nicolas Marin (NicolasMarin.com)
  23. Entre Códigos (entrecodigos.com)
  24. Tecnología (sinerblog.com)
  25. MicroZulo (Recursos web)
  26. Julio Soler (El Weblog de Julio Soler)
  27. De Todo Para Vivir (De Todo Para Vivir)
  28. Recetas de cocina (lasrecetascocina.com)
  29. Informatica y Curiosidades (Libreticas.com)
  30. Reality Shows y Concursos (Teleojo)
  31. Comic y Manga (actualidadcomic.com)
  32. Blog de diseño gráfico (roc21)
  33. Deporteaccion (deporteaccion.com)
  34. Vídeos de cine y noticias de series (cineyseries.com)
  35. Aprenda asp.net paso a paso (AJAX, Servicios web,etc)
  36. Bend It Like Tapanez (tapanez.com)
  37. Blog de recetas de comida colombiana (tipicacomidacolombiana.blogspot.com)
  38. Sigue la actualidad del mundo Off-Road (4×4 Sport Division)
  39. Zyrus Blog – Tecnología e Informatica
  40. Lo más divertido de la red (mierdamierda.com)
  41. Bitácora de Yhandros (www.yhandros.com)
  42. KriBol BloG (kribol.com)
  43. actualidad en diseño, fotografía… (ediphici.wordpress.com)
  44. Novoblog, actualidad aplicaciones (blogueteando.blogspot.com)
  45. Taller de posicionamiento en buscadores (tallerseo.blogspot.com)
  46. PisitoenMadrid (donde se hospeda lo mejor de la web)
  47. islas cies blog (Islas Cíes, Vigo)
  48. CRM 2.0 (analistaCRM.com)
  49. El Rincon de Tolito (ElrincondeTolito.com)
  50. Un Blog de email marketing (hera-biancardi.com)
  51. Trastornos alimentarios (comedoracompulsiva)
  52. Noticias ultima hora (noticias-ultima-hora.blogspot.com)
  53. Gran Hermano 5 (http://granhermano-5-argentina.blogspot.com)
  54. Blogs Joomla (http://joomlablogs.blogspot.com/)
  55. CMS Joomla (http://cmsjoomla.blogspot.com/)
  56. Concurso Habitaquo (http://concursohabitaquo.blogspot.com/)
  57. Tres Zero Redes Sociales del Conocimiento (WEB 2.0, Redes Sociales)
  58. Tu ambiente tecnológico (enhaxed.blogspot.com)
  59. AppleSensation (Noticias y cosas curiosas comentadas en dos líneas)
  60. Amebas a la deriva (amebasaladeriva.com)
  61. Series Yonkis (Series gratis)
  62. Formula 1 en Valencia (formula1-valencia.com)
  63. Labor de Noógrafo (elnoografo.wordpress.com)
  64. Letras de canciones (Tu canción favorita)
  65. Noticias de famosos (Desvestir.com)
  66. Adminempresas.com (La comunidad de los administradores de empresas)
  67. Hardware, MP3s, Móviles y Gadgets (Las últimas novedades multimedia y curiosidades tecnológicas)
  68. Blog Informático (Posicionamiento web, hardware, software, tecnología…)
  69. Tiempo libre (redmaniatic.awardspace.com)
  70. Melasudas (Me la suda si me lees)
  71. Vómito Sozial (Un blog con rock, fútbol y otras paridas)
  72. No Solo Magia (nosolomagia.com)
  73. Pindoles (Publicidad, Branding, Comunicación y mundo geek)
  74. Programación y Seo (viacodigo.es)
  75. Tesis y Monografías (Asesoría en Metodología de la Investigación)
  76. Adsense y Posicionamiento Web (consejos sobre Adsense y posicionamiento web)
  77. Buzzeando (comunicación viral e interactiva, y nuevos medios)
  78. Un Blog de email marketing (hera-biancardi.com)
  79. JR3T4M4L (Informatica, Publicidad y Marketing)
  80. Arricom (El blog ácido de A.R.R.)
  81. Blogomovil, coches, motor, automoción… (blogomovil.com)
  82. BlogXRed (Comunidad de blogs)
  83. Diseño Web (Trazos Web, blog destinado a los bloggers y webmaster)
  84. e-Libertad Financiera (e-Libertad Financiera, blog de consejos para obtener la Libertad Financiera)
  85. Juegos y curiosidades (Curiosidades divertidas y juegos mentales)
  86. Pagina de Noemi (Un blog lleno de acertijos e ilusiones opticas)
  87. La apatía uniforme (blog personal de un apático empedernido)
  88. My Reality Bytes (julianaka.blogspot.com)

Si quieres continuar esta cadena se trata de que escribas un post en tu blog con la lista anterior y añadas el enlace a tu blog al final.

Deja un comentario con el enlace a tu blog y la descripción que quieras para poder ir actualizando la lista más fácilmente… Aunque lo suyo es ir actualizando la lista conforme se van recibiendo nuevos backlinks de blogs que han seguido la cadena.

Tagged with:
Jun 07

WordPress está disponible en varios idiomas gracias al sistema de localización GNU gettext. Dentro del código de WordPress nos encontramos dos funciones para hacer el trabajo con gettext mucho más sencillo y así poder programar plugins y temas multi-idioma, estas funciones son las mismas que usa internamente el propio WordPress. A pesar de disponer de estas facilidades es muy frecuente encontrarse temas en un único idioma, es cierto que hacer temas multi-idioma añade un coste extra a la confección de un tema, pero en mi opinión es algo que merece la pena si queremos dar mucha más visibilidad a nuestro trabajo. A continuación describo como usar estos mecanismos que proporciona el WordPress para realizar un tema multi-idioma.

[1] Escoger un nombre para el “dominio”. Se trata de escoger un nombre para todo el conjunto de traducciones, normalmente el mismo nombre del tema nos servirá, lo único a tener en cuenta es que ha de ser un nombre único entre todos los temas y plugins instalados.

[2] Modificar las plantillas. Se trata de usar unas determinadas funciones PHP para sacar por pantalla cualquier cadena de texto que tengamos en nuestras plantillas.

Las funciones son _e($texto) y __($texto). Estas funciones buscan una traducción de $texto en el catálogo usando como índice el texto pasado y si no la encuentran devuelven $texto sin modificar, el idioma a traducir lo define la constante WPLANG (en wp-config.php). La única diferencia entre las dos funciones es que __() devuelve con un return() el texto traducido y _e() lo imprime por pantalla con un echo().

Un ejemplo de __e():

[php]

About

[/php]

por:

[php]

[/php]

Un ejemplo de __():

[php] the_content(‘Read the rest of this entry’); [/php]

por:

[php] the_content(__(‘Read the rest of this entry’,’ejemplo_domain’)); [/php]

Para la correcta traducción de las frases en ocasiones es necesario usar printf() o sprinf() junto con __(). Por ejemplo:

[php] printf(__(‘You are currently browsing the %1$s weblog archives for the %2$s category.’,’ejemplo_domain’), get_settings(‘siteurl’), single_cat_title(”,false)); [/php]

Esto permite que el traductor entienda más el significado de la frase que si la troceamos con varios _e(), también permite cambiar el orden de las variables (%1$s y %2$s) si nuestro idioma lo requiere.

A parte de los textos que se mostrarán por pantalla tenemos otros strings importantes a internacionalizar, son los que definen el formato de las fechas. Por ejemplo:

[php] the_time(‘l, F jS, Y’); [/php]

por:

[php] the_time(__(‘l, F jS, Y’),’ejemplo_domain’); [/php]

[3] Crear el catálogo de traducciones. Existen varios programas para trabajar con archivos POT, a continuación describo brevemente como usar poEdit para generar el archivo POT y MO a partir de las plantillas anteriormente modificadas.

  • Instalamos poEdit.
  • Configuraciones iniciales como nuestro nombre, etc. en “File -> Preferences”.
  • Creamos un nuevo catálogo con “File -> New Catalog”. En el cuadro de diálogo que aparece:
    • En “Project Info” introducimos el nombre del proyecto, idioma, etc. y la codificación utf-8 (por defecto en todo WP).
    • En “Paths” añadimos un único path, el “.”.
    • En “Keywords” añadimos los nombres de las funciones usadas para trabajar con gettext, “__e” y “__” (sin las comillas).
  • Lo siguiente es generar el catálogo. Es necesario guardarlo en el mismo directorio que los archivos del tema y ponerle el nombre del locale deseado (p.e. es_ES).

Si todo ha ido bien poEdit escaneará todas nuestras plantillas y generará un archivo POT listo para empezar a traducir. Cada vez que se guarda el catálogo se generará automáticamente el MO, que es el que realmente usa el código PHP, a no ser que configuremos lo contrario en “Preferences”.

[4] Cargar las traducciones desde el tema. Ahora sólo falta que nuestro tema cargue el catálogo apropiado dependiendo del idioma definido, esto lo conseguimos añadiendo lo siguiente antes de cualquier llamada a __() o _e(), un buen lugar es al principio del index.php o del header.php:

[php] load_theme_textdomain(‘ejemplo_domain’); [/php]

[5] Listos! En el siguiente acceso a nuestro blog veremos todas las frases traducidas.

Aunque el procedimiento descrito está centrado en WP y las funciones que nos brinda para la internacionalización es muy parecido al uso de otros sistemas basados en gettext, como plugins Smarty, o al uso directo de las funciones gettext del PHP.

Si quieres más información puedes consultar los capítulos Traduciendo WordPress y Escribiendo un Plugin de la documentación de WordPress.

Tagged with:
Jan 28

Los feeds son una de las formas más prácticas de mantenerse al día de los últimos updates de nuestros blogs favoritos. Usando sistemas como Bloglines puedes llegar a estar suscrito a centenares de feeds.

Si tenemos un blog con un poco de tráfico es muy probable que ya tengamos suscritas unas cuantas personas al feed del blog. Los lectores pueden hacer un check de nuestras feeds en un intervalo de 10 a 30 minutos. Esto con unas 30 o 50 personas suscritas suponen unas 3000 peticiones diarias o más.

Se ha de sumar también que dependiendo de donde tengas presencia con tu blog puedes tener unas 5 o 10 arañas de buscadores consultando el feed. Sin ánimo de hacer publicidad una muy buena solución para quitarnos de encima esta carga es usar FeedBurner. A parte de que ofrece varios servicios interesantes (contadores, estadísticas, etc.).

Puedes fácilmente crearte una cuenta en FeedBurner y agregar tantos feeds como quieras. La idea es que sólo FeedBurner recoja los feeds de tu blog y las peticiones de todos los demás las sirva FeedBurner.

Una manera muy sencilla de conseguir lo anterior es con el uso de mod_rewrite. Esto proporciona dos ventajas, una que no necesitamos modificar absolutamente nada de nuestro blog y la otra que si algún día no queremos seguir con FeedBurner la URL de los feeds que difundimos es la original y no tendremos ningún problema. Otra opción es modificar la plantilla de nuestro blog para que informe de la URL de FeedBurner, pero no podremos cancelar la cuenta con FeedBurner sin perder lectores.

Las reglas para el .htaccess son las siguientes:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_USER_AGENT} FeedBurner
RewriteRule ^feed/(.*)$ /wp-feed.php?feed=$1 [L,QSA]
RewriteCond %{HTTP_USER_AGENT} !FeedBurner
RewriteRule ^feed/(.*)$ http://feeds.feedburner.com/phpbsd [R,L]
</IfModule>

Con lo anterior dejamos que FeedBurner acceda a los feeds generados por nuestro WordPress y todos los demás navegadores (o arañas de buscadores) los redireccionamos a FeedBurner.

Modificando las anteriores reglas puedes redireccionar otras feeds a FeedBurner que no sean la principal. Por ejemplo para las feeds de un tag específico (si tienes el UTW):

RewriteCond %{HTTP_USER_AGENT} !FeedBurner
RewriteRule ^tag/php/feed/(.*)$ http://feeds.feedburner.com/phpbsd/php [R,L]

Con todas las reglas de rewrite anteriores se asume que tenemos configurado WordPress para generar las feeds ante una URL terminada con “/feed/” y que hemos configurado las feeds correspondientes en FeedBurner.

Para más información tienes la ayuda en wordpress.org y la discusión en el foro correspondiente, también existen algunos plugins relacionados.

Tagged with:
preload preload preload