10 cosas sobre el desarrollo de plugins en wordpress

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.

Activar una opción de un menú principal cuando navegamos por un submenú

Diseño web

En muchos CMS’s nos pasa que cuando creamos un menú con un enlace a una sección, se active correctamente cuando estamos justo en esa página, pero pieda la clase css que lo marca como activo en cuanto navegamos por las páginas hijas.

Pueden haber distintas soluciones dependiendo del cms que estemos utilizando y de la arquitectura de las urls, pero… si podemos detectar un trozo de nuestra url que no cambia cuando navegamos por la sección, y nunca se encuentra cuando navegamos por el resto, como por ejemplo ‘/blog/’, podemos hacer una ñapa por jquery para que se active la opción de menú poniendo la clase css que corresponda.

El código sería algo como:

<script type="text/javascript">

var sUrl = document.location.href;
if (sUrl.indexOf('/blog/') > 0) {
    jQuery("ul.menu > li > a > span:contains('Blog')").parent().parent().addClass('active current');
}
</script>

Lo que hace es detectar que la url contiene la cadena de texto que identifica que estamos navegando por nuestra sección, y coge el elemento de esa opción del menú por jquery, y le pone al elemento que corresponde la clase css que corresponde.

Si esto os pasa usando Joomla! y con url’s amigables, este plugin ‘Active Parent Menu‘ que hemos desarrollado os puede servir de ayuda:

descargar

Creando un plugin de Joomla!

Joomla

Crear un plugin de Joomla! es algo bastante sencillo.

En resumen, un plugin básico constaría de un archivo php y otro xml con el mismo nombre.

El nombre de los archivos es importante porque participa en formar el nombre de la clase del php.

Haremos que nuestra clase herede de JPlugin, y que sobrescriba los métodos correspondientes a los eventos que queramos.

Un esqueleto de plugin básico sería:

<?php

defined( '_JEXEC' ) or die( 'Acceso Restringido' );
jimport( 'joomla.plugin.plugin' );

class plgContentMyPlugin extends JPlugin {

function plgContentMyPlugin( &$subject ) {
    parent::__construct( $subject );
}

function onBeforeDisplayContent(&$article, &$params, $limitstart=0) {

    $plugin =& JPluginHelper::getPlugin('content', 'MyPlugin');
    $pluginParams = new JParameter( $plugin->params );
    $mensaje = "";

    $mensaje = $pluginParams->get('mensaje', 'Hola Mundo');

    $salidaPantalla = '<h2>' . $mensaje . '</h2>';

    return $salidaPantalla;
}

}
?>

Podéis leer una explicación más completa y ver qué forma tiene que tener el xml en este post de nosolocodigo.

Lo siguiente que tenéis que tener en cuenta, es qué evento queréis utilizar para realizar vuestro cometido.

Podéis ver una lista de eventos y algo más de información sobre la creación de plugins en esta página de la documentación oficial de Joomla!.

Con esto en principio ya lo tenéis todo.

Os recomendamos que después de documentaros, al final penséis en que plugin, de los que ya tenéis en la carpeta ‘/plugins/’, es el que realiza la acción que más se parece a la que queréis hacer, y lo cojáis como base para hacer el vuestro.

Como procedimiento, recomendamos, ocuparnos primero de la estructura del plugin y que funcione su instalación, para después, preocuparnos de la funcionalidad trabajando directamente con los ficheros de código, acordándonos antes de poner la opción ‘Informe de errores’ a ‘Maximo’ en la configuración global de servidor, para que veamos si tenemos algún error y no nos quede un pantallazo en blanco. xD

Por último, tened en cuenta grabar los archivos con codificación UTF-8 y hacer el zip con la opción de ‘Enviar a  -> Carpeta comprimida en zip’ de Windows o similar para que sea un zip lo mas estándar posible y no de problemas al instalarlo desde Joomla!.

Esperamos que os haya servido de ayuda!

Cambiar idioma plantilla / plugin WordPress

Wordpress

Hay veces que nos bajamos plantillas o plugins para wordpress en las que se nos dice que lleva la traduccion, pero al instalarla no va. Por lo visto, en las versiones 3 o mayores de wordpress, el wp_config.php define la variable WP_LANG a ‘es’ y no a ‘es_ES’.

Por tanto, miramos en el wp_config.php (en la raiz) como esta definido el idioma. Si esta a es y no vemos la traduccion, vamos a wp_includes y entramos en themes o plugins y buscamos el archivo del idioma (.po y .mo). Lo renombramos de es_ES a es y listo.

Por cierto, si quereis cambiar algo de la traducción, aqui esta este fantástico programa poedit para cambiar las traducciones.