10 cosas sobre el desarrollo de plugins en wordpress

Todo aquel que quiera empezar a desarrollar un plugin para wordpress, debería leer este artículo de ‘smashing magazine’: Ten Things Every WordPress Plugin Developer Should Know.

A grandes rasgos, las 10 cosas que nos enseña son:

  1. Habilitar la depuración.
  2. Prefijar nuestras funciones.
  3. Crear tus propios ‘paths’ globales.
  4. Guardar la versión del plugin para futuras actualizaciones.
  5. Usar “dbDelta()” para crear o actualizar tablas.
  6. Conocer la diferencia entre include, include_once, require, y require_once.
  7. Usar bloginfo(‘wpurl’) envés de bloginfo(‘url’).
  8. Saber cómo y cuándo usar acciones y filtros.
  9. Añadir tu propia página de configuración o menú de administración.
  10. Crear un acceso directo a la página de configuración mediante ‘plugin_action_links’.

Teniendo en cuenta estos 10 mandamientos de la creación de plugins para wordpress, nos quedara un plugin impecable.

Depurar código en Joomla con FirePHP

Hay muchas formas de depurar código en PHP. Lo más habitual y rápido es usar ‘echo’ y ‘var_dump’ a cascoporro y listo. Pero si queremos algo un poco más profesional, firePHP es una excelente opción.

FirePHP es una extensión de la ya conocida extensión FireBug de FireFox.

Con esta herramienta, e incluyendo una pequeña librería en nuestro proyecto, podemos simplemente poner “fb($variable);” y en la consola de nuestro firebug nos aparecerá como un var_dump mejorado de la estructura y contenido de esa variable.

Así no ensuciamos la salida estándar de nuestro proyecto. xD

firephp en un item de K2

Si usamos Joomla, incluir la librería es mucho más fácil gracias a la extensión “J FirePHP”.

Solo tenemos que instalar y habilitar el plugin y listo. Ya podemos usar la función ‘fb’ en cualquier parte del código.

Además, el plugin permite también hacer un control de excepciones mediante firePHP y algunas otras opciones avanzadas en las que no vamos a entrar.

Tenéis toda la información en los enlaces.

NOTAS:

* 16/08/2011: A veces FirePHP no funciona con algunas versiones de firefox (como la 6) en combinación con algunas versiones de firebug. Es mas, tener instaladas algunas versiones de firebug y firephp en firefox 6 hace que firebug “desaparezca” y también otros complementos (como xmarks). Para solucionarlo reinstale la version 5 de firefox y las versiones de firebug 1.8.1 y de firephp 0.6.1.

* 16/08/2011: Si instalas el plugin y ves que no te muestra nada en consola comprueba que la opción del plugin Limit functionality to Joomla debug mode esta deshabilitada o bien habilita la depuración de joomla desde la configuración global.

Selectores en CSS2 y CSS3 – pseudo-classes

Hoy dejo un pequeño repaso de los selectores, pseudo-class y pseudo-elements para CSS2 y CSS3. Lo hago porque ultimamente he utilizado los clasicos :last-child y :first-child, pero buscando he encontrado otros también muy interesantes, sobre todo el :after y el :before.

CSS2:

* Selector niversal, son todos los elementos del CSS
E E representa cualquier elemento del tipo E (span, p, …)
E F Todos los elementos F que sean descendentes de E
E > F Todos los elementos F que sean hijos de E
E:first-child De esta forma podemos seleccionar el primer elemento de tipo E
E:last-child De esta forma podemos seleccionar el ultimo elemento de tipo E
E:link , E:visited Selecciona los elementos E que sean un enlaces y no hayan sido visitados (:link) y los si visitandos (:visited)
E:active , E:hover , E:focus Selecciona los elementos de tipo E , en sus correspondientes acciones.
E:lang(c) Cogemos los elementos del tipo E que estén en el idioma (humano) especificado en (c).
E + F Se trata de cualquier elemento F inmediatamente despues del elemento del tipo E
E[foo] Elementos del tipo E con el atributo foo
E[foo=”ejemplo”] Elementos del tipo E con el atributo foo igual a “ejemplo”
E[foo~=”ejemplo”] Elementos del tipo E con el atributo foo contenga “ejemplo”. Se pueden añadir varias palabras separadas por espacios. ( ~ =ALT + 0126)
E[lang|=”es”] Similar al anterior, pero se referirá a todos los elemento E tal que su atributo lang comienze por “es”. Por ejemplo: “es_ES”, “es_CA”,…
E[foo$=”ejemplo”] Elementos del tipo E en el que el atributo foo termine con “ejemplo”.
DIV.ejemplo Todos los elementos DIV que sean de la clase ejemplo
E#miID El elemento E en el que su ID sea igual miID
:first-line Se refiere a la primera línea del elemento, normalmente usado para para elemetos de texto.
:first-letter La primera letra del elemento, tambien suele usarse para elementos de texto.
:before Elemento usado para insertar algún contenido delante de un elemento.
:after Elemento usado para insertar algún contenido al final del elemento.

CSS3:

:nth-child(N) Se utiliza para tablas normalmente. N puede ser 5, 2n+1, 3n+3 …

ul li:nth-child(5) {
color: #ccc;
}
ul li:nth-child(5) {
color: #ccc;
}
tr:nth-child(2n+2) {background: #eee}

Conforme vaya encontrado más (que los hay), iré publicando más post.

Guía de buenas prácticas en el desarrollo Front End

Aquí os dejamos un gran recopilatorio sobre ciertos aspectos que tenemos que tener en cuenta cuando estamos desarrollando un proyecto.

Desde la definición del DOCTYPE, el uso de microformatos, o los ‘alt’ en las imágenes, hasta el código en javascript, jquery, css, e incluso alguna anotación sobre HTML5.

Front end development guidelines (en inglés)

Vale la pena darle un vistazo.

xD

Problemas con el botón de compartir de Twitter en K2 de joomla

Hoy me he dado cuenta de que el botón de compartir de twitter del componente k2 de joomla no funcionaba. Es algo que ya habia visto en otras páginas, directamente me enviaba al inicio de twitter sin twittearme lo que quería. Asi que me he puesto a indagar y he visto que en las páginas que funciona la url era diferente a la que te facilita k2.
La url incorrecta es:
http://twitter.com/home/?status=Reading+@username+titulo-articulo+tinyurl
La url correcta es:
http://twitter.com/intent/tweet?text=titulo&url=tinyurl&via=username
Para solucionarlo hay que hacer lo siguiente:

  1. Buscamos en components/k2/views/item los archivos view.raw.php y view.html.php
  2. En el archivo view.raw.php sobre la línea 214 la comentamos y ponemos bajo la que tiene la url correcta. Fijaros que hace uso ya de tinyurl y del username y demás:
    //$item->twitterURL = 'http://twitter.com/home/?status='.urlencode('Reading @'.$params->get('twitterUsername').' '.$item->title.' '.$itemURLForTwitter);
    $item->twitterURL = 'http://twitter.com/intent/tweet?text='.urlencode($item->title).'&url='.urlencode($itemURLForTwitter).'&via='.urlencode($params->get('twitterUsername'));
  3. En el archivo view.html.php sobre la línea 221 la comentamos y ponemos bajo la que tiene la url correcta. Es identico al anterior archivo.

Con esto se nos abrirá un popup que nos pedirá loguearnos en twitter y sino saldrá el texto a compartir. Una vez twitteado este se cerrará.