Aprende Markdown en sencillos pasos

Lo acabo de leer en el blog de Victorhck y no he podido resistirme a compartirlo por aquí: un tutorial de Markdown (podéis hacerlo pulsando el link) similar al que hace poco os presenté por aquí de GitHub.

Markdown

Markdown es un lenguaje de marcado ligero, muy sencillo de leer y utilizar, que convierte el texto marcado a documentos XHTML. Se distribuye bajo licencia BSD y está presente en muchos CMS. Fue creado por John Gruber, contando con la aportación del programa html2text de Aaron Swartz.

Os dejo también, además de la fuente de dónde saqué el tutorial, otro enlace a una entrada de Victorhck sobre cómo usar Markdown en WordPress.

Os recomiendo echarle un ojo, ya que se trata de una herramienta muy útil que, por otra parte, es fácil de aprender.

Seguridad en WordPress ¿cómo cambiar el prefijo de la base de datos?

Si alguna vez has hecho una instalación de WordPress verás que te solicita, para crear el sitio, el nombre de una base de datos, el usuario con el que se conectará a ella, la contraseña de ese usuario y un prefijo. ¿Por qué un prefijo? Simplemente porque así puedes tener varias instalaciones de WordPress (o de otros CMS que usen nombres de tabla muy genéricos tipo “users”, “posts”, etc.) en una misma base de datos.

Si no cambiamos esta configuración por defecto el sistema pondrá el prefijo “wp_” a las tablas. El no poner un prefijo personalizado, en si, constituye un error. Porque dejando el prefijo por defecto estás provocando: a)Que si un atacante logra ver el nombre de una tabla descubra que el CMS que estás utilizando es WordPress y b) Que dicho atacante, entonces, pueda conocer los nombres de las tablas de tu base de datos. La solución es simple, durante la instalación define un prefijo personalizado.

¿Ya lo tienes instalado? Don’t worry, be nécora. No está todo perdido, tienes todavía varias opciones. La más rápida y simple, instalas este plugin que te permitará cambiarla cómodamente desde la interfaz gráfica. ¿La versión más larga y compleja y élite? Pues los siguientes pasos te lo explican:

Bueno, como paso previo, o paso 0 del proceso HAZ UN BACKUP DE TU BASE DE DATOS POR SI ALGO FALLA Y TIENES QUE RECUPERARLA. Consejo que debes tener siempre en mente cuando te pongas a tocar tablas de una instalación de cualquier cosa.

El primer paso: ir a wp-config.php y cambiar ahí el prefijo (en nuestro caso pondremos como prefijo personalizado my_b457Bch33s_ ).

$table_prefix  = 'my_b457Bch33s_';

El siguiente paso es renombrar todas las tablas de tu instalación de wordpress:

/*Básicamente vas haciendo esto con todas las tablas*/
RENAME table `wp_comments` TO `my_b457Bch33s_comments`;

Tras renombrar las tablas haces un update sobre la tabla options buscando todas las líneas que hagan referencia a tablas con el prefijo viejo para actualizarlas:

UPDATE `my_b457Bch33s_options` SET `option_name`=REPLACE(`option_name`,'wp_','my_b457Bch33s_') WHERE `option_name` LIKE '%wp_%';

Y con la tabla usermeta tres cuartos de lo mismo, update que te crió.

UPDATE `my_b457Bch33s_usermeta` SET `meta_key`=REPLACE(`meta_key`,'wp_','my_b457Bch33s_') WHERE `meta_key` LIKE '%wp_%';

Y tras esto deberías tener todo funcionando de nuevo, pero con el nuevo prefijo, más seguro contra potenciales atacantes.

Usar Bit.ly en WordPress para acortar URL’s

Existen dos formas de usar el acortador de URL Bit.ly en WordPress. ¿Por qué usar Bit.ly para acortar url’s y no usar, por ejemplo, perce.be? Bueno, depende del uso que le queráis dar, claro. Un site como perce.be os permite acortar la URL, cumple su función. Pero Bit.ly además de permitirnos  acortar un link también nos dará estadísticas sobre cuántas veces se ha hecho click, desde donde… en fin, tiene un completo sistema de estadísticas. (Si no queréis generarlas entonces os será más cómodo un servicio más directo, como perce.be).

Bueno, ya os he comentado que hay dos formas de usar Bit.ly en WP. La primera y la más sencilla es instalar un plugin para Bit.ly, de los que ya hay varios disponibles, pero el más recomendable es WP-bitly, ya que otros de las más populares llevan tiempo sin actualizaciones.

Pero si no quieres depdender de un plugin externo siempre puedes meterle mano al código (recordad que hablamos de instalaciones de WordPress en vuestros propios servidores, no de los WP gratuitos de wordpress.com, como este). Lo primero es que os hagáis una cuenta para acceder al API de Bit.ly, y tras esto le metéis mano a functions.php:

function bitly()
{
  //información del login
  $url = get_permalink(); //genera el permalink de wordpress
  $login = 'tulogin'; //aquí mete tu nombre de usuario de Bit.ly
  $apikey = 'R_churro_de_letras_y_números'; //tu API key de Bit.ly
  $format = 'json'; //puedes elegir json o xml, en este caso json
  $version = '2.0.1';

  //creando la url
  $bitly = 'http://api.bit.ly/shorten?version='.$version.'&longUrl='.urlencode($url).'&login='.$login.'&apiKey='.$apikey.'&format='.$format;

  //obtener la url
  //también podría usarse cURL
  $response = file_get_contents($bitly);

  //ahora toca parsear según el formato
  //vamos a usar las dos posibilidades aunque arriba haya elegido json
  if(strtolower($format) == 'json')
  {
    $json = @json_decode($response,true); //descodificamos el json
    echo $json['results'][$url]['shortUrl']; //imprimimos datos
  }
  else //xml
  {
    $xml = simplexml_load_string($response); //cargamos el xml
    echo 'http://bit.ly/'.$xml->results->nodeKeyVal->hash; //imprimimos lo buscado
  }
}

Y con esto tenemos ya la función. Ahora nos queda añadirla a nuestro código. En single.php, debajo de la llamada a the_content() es el lugar ideal para meter tu llamada a bitly(). Y listo, ya estás generando tu url acortada con Bit.ly.

Deshabilitar cambio de Theme en WordPress

A veces, cuando montas un Wodpress para un cliente, no te interesa que este pueda cambiar el theme. No es por limitar la libertad del cliente, es por el riesgo de que trasteando lo cambie, luego no sea capaz de volver a ponerlo y tengas que ir a hacer mantenimiento (que siempre le puedes cobrar, pero si te está pagando una tarifa fijo por mantenimiento, que es lo normal,  eso acaba en “más trabajo por el mismo precio“). Tranquilo, basta con añadir unas pocas líneas a functions.php y evitaremos que esto ocurra, bloqueando la posibilidad de cambiar el theme del usuario.

add_action('admin_init', 'que_cambie_el_theme_tu_abuela');
function que_cambie_el_theme_tu_abuela() {
  global $submenu, $userdata;
  get_currentuserinfo();
  if ($userdata->ID != 1) {
    unset($submenu['themes.php'][5]);
    unset($submenu['themes.php'][15]);
  }
}

Y point ball (oseáse, punto pelota). Bueno, mejor no le llaméis “que_cambie_el_theme_tu_abuela” a la función, por cosas de profesionalidad, ponedle algo como “bloquear_cambio_theme“, “bloquear_theme“, etc.

Deshabilitar trackbacks en WordPress hacia tus artículos cuando los autorreferencias

Como sabéis todos los que tenéis un blog, los trackbacks son un sistema que os avisa cuando un bloguero ha hecho una referencia a uno de vuestros artículos en el suyo. Pero claro, si tú haces una referencia a uno de tus propios artículos en otro (tipo “Como ya comenté en el artículo X…”) el trackback también se envía. Como generalmente no queremos comentarios de nuestros propios trackbacks en nuestros artículos os voy a enseñar un pequeño fragmento de código que, añadido a functions.php deshabilitará el auto-trackback:

function deshabilitar_autoping(&$links){
    foreach ($links as $l=>$link){
      if(0===strpos($link, get_option('home')))
         unset($links[$l]);
    }
}
add_action('pre_ping'; 'deshabilitar_autoping');

Una simple función que os ahorrará tener que estar borrando cada dos por tres vuestros propios trackbacks.

BuddyPress vs Drupal Commons: crea tu red social con software libre

Creo que alguna vez comenté por aquí que estoy trabajando en el desarrollo de módulos para la red social PHPFox. No es que me convenza mucho este cms para la creación de redes sociales, la verdad, pero es cosa de la empresa. En todo caso, creo que PHPFox tiene una documentación que en el mejor de los casos es chapucera y en el peor inexistente, una comunidad profundamente inactiva y mercantilizada y un grave problema de rendimiento y escalabilidad. Y además hay que pagar licencia.

Por eso dediqué unos días a buscar opciones libres para crear una red social, no porque a mi empresa le interese (que de momento parece que están muy contentos con Fox) sino por mera curiosidad, y tal vez para montar alguna algún día, pero es sólo una chorrada que me ronda la cabeza.

A lo que íbamos, ¿qué dos opciones libres suenan con más fuerza? Pues BuddyPress y Drupal Commons. Ambos no son un CMS propiamente dicho, sino extensiones para otros CMS que nos dan la funcionalidad de red social

BuddyPress, como te puedes imaginar, está desarrollado para WordPress. Su instalación es simple: instalas WordPress ( a poder ser, la última versión), subir el plugin al servidor e instalarlo desde el menú de instalar plugins. Total, que en 10 minutos tienes montado todo en tu servidor.

Drupal Commons, evidentemente, es un plugin para Drupal. Su instalación es todavía más sencilla: sólo debes seleccionar el perfil Drupal Commons durante la instalación de Drupal, y listo.

En cuanto a funcionalidades, BuddyPress es menos completo que Commons. El plugin de wordpress incluye un stream de actividades de los usuarios, perfiles extendidos, posibilidad de conectar con amigos, posibilidad de crear grupos extensibles, mensajes privados, foros de discusión y todas las fucionalidades de WordPress para crear blogs. Lo básico para crear una comunidad.

Commons por su parte viene de serie más completo: los perfiles de usuario incluyen más variables, es capaz de crear automáticamente grupos respecto a la información del perfil, incluye foros de discusión, blogs (eso sí, en este caso menos potentes que los de wordpress), creación y gestión de eventos, creación de wikis, administración de documentos, integración con RSS, noticias, mayor control de la privacidad, editor WYSIWYG para los textos, estadísticas de la comunidad

Bueno, parece que ahí gana Commons ¿o no? Piénsalo bien, más funcionalidades no significa mejor. No quiero decir que Commons por abarcar mucho apriete poco, no, simplemente que es posible que en tu comunidad no necesites todas las funcionalidades que Drupal Commons trae por defecto. Y que no vengan por defecto en BuddyPress no significa que no existan para este, sólo que las tienes que instalar aparte.

En cuanto a diseño, el que incluye por defecto BuddyPress me parece más atractivo, pero ambos pueden ser modificados y personalizados, ya sea a través de la edición manual del css, a través de simples menús de personalización o adquiriendo alguna plantilla (las hay gratis y de pago). En todo caso, para gente que no sepa CSS Drupal Commons es más cómodo de personalizar.

Al ser software libre ambos tienen una amplia comunidad por detrás: Commons está apoyado y mantenido por Acquia, los cuales además de permitirte la descarga gratuita del plugin también ofertan de forma comercial hosting y mantenimiento para tu red. Commons tiene un API que te permitirá desarrollar módulos para extender su funcionamiento, además de tener acceso a miles de módulos. Con BuddyPress tienes menos módulos específicos, pero con todo dispones de todos los módulos de Worpress para añadir.

No voy a decir que uno sea peor que el otro. Creo que para un usuario avanzado BuddyPress es más flexible, y para uno novato Commons, aunque más grande, puede ser más fácil de gestionar al no tener que andar instalando plugins. En todo caso, a vosotros corresponde decidir. Yo todavía tengo que hacer más testeos caseros con ambos, pero ya tengo un par de ideas rondando la cefa.