Además de las que ya hemos visto a lo largo de los artículos de esta sesión, existen otras técnicas avanzadas que permiten personalizar las instalaciones de WordPress. Todas ellas exigen cierta experiencia con la programación en PHP, así que las abordaremos de forma muy general, ilustrándolas, cuando sea pertinente, con algún ejemplo.
1. Modificación del fichero functions.php del tema
Muchas de las funciones y scripts que hemos visto a lo largo de esta sesión pueden añadirse al fichero functions.php del tema que estemos utilizando en nuestro sitio web. El efecto es muy semejante al que ya hemos comprobado en los artículos dedicados a la modificación de las áreas de hooks del framework Genesis o a la activación de scripts mediante el plugin Code Snippets.
Ahora bien, a diferencia de las dos técnicas a las que nos acabamos de referir, modificar el fichero functions.php es un procedimiento que el PNTE desaconseja abiertamente. En efecto, tal como ya hemos dicho y repetido varias veces a lo largo de este curso, editar los ficheros del tema convierte a este en un elemento muy difícil de mantener y actualizar por parte de los servicios del Departamento de Educación.
Así pues, nos ahorraremos explicaciones detalladas. No obstante, quienes tengan experiencia en programación, y quieran asumir los riesgos inherentes a este procedimiento (entre otros, el de hacer que su sitio web quede totalmente inoperativo), pueden consultar los siguientes tutoriales:
2. Programación de un plugin de funciones
Esta técnica supone un paso más en el proceso de personalización avanzada que venimos detallando. Ya no se trata de tomar un fichero existente y añadirle pequeños fragmentos de código, sino de crear un plugin completamente nuevo y personal, del que formarán parte una o varias de las funciones personalizadas que sean necesarias. En realidad, crear un plugin propio no es demasiado diferente a lo que ya hemos explicado en capítulos precedentes (es decir, añadir scripts a las áreas de hooks del framework Genesis o activarlos mediante el plugin Code Snippets), ya que los principios de programación y las cautelas que se deben adoptar son idénticos. Ahora bien, la definición de un plugin exige respetar minuciosamente las normas y estándares que WordPress ha establecido para esta clase de artefactos.
Es cierto que la elaboración de un plugin de funciones puede ser un proceso erizado de dificultades para alguien que no tenga experiencia previa en programación, pero presenta algunas ventajas considerables con respecto a la edición del fichero functions.php:
- Los plugins de funciones no modifican ningún fichero ya existente en el núcleo de WordPress, los temas o los plugins. En su caso, alteran su comportamiento, o añaden nuevas funcionalidades.
- Los plugins de funciones presentan riesgos relativamente pequeños; en efecto, y a diferencia de la modificación del fichero functions.php del tema, que puede echar abajo nuestro sitio web (sin posibilidad de recuperación de su estado inicial a no ser que hayamos guardado una copia de seguridad del tema), un error grave provocado por un plugin de funciones se resuelve en la mayoría de los casos borrándolo desde el interfaz de administración de WordPress; si esto no es posible, habrá que conectarse por FTP y borrarlo, o bien renombrar su extensión.
- Los plugins de funciones se pueden modularizar para aislar sus distintos elementos; se pueden definir distintas funciones en el mismo plugin, crear diversos plugins para funciones diferentes, etc.
Durante la sesión dedicada a la personalización avanzada de WordPress, mostraremos a los asistentes al curso un par de ejemplos de plugins de funciones. Ahora bien, no vamos a explicar su proceso de creación, ni mucho menos las técnicas de programación necesarias. En cualquier caso, los interesados en profundizar en este ámbito pueden consultar los siguientes artículos:
- Crea un plugin para liberar el fichero functions.php.
- Crear un plugin para añadir funciones.
- Tutorial de WordPress Plugins: Cómo crear un plugin de WordPress.
3. Plugins especiales: los plugins MU
Cuando se crea un plugin (sea de funciones, sea de cualquier otro tipo), este se debe colocar en el directorio /wp-content/plugins. Ahora bien, eso no basta, ya que el administrador del sitio debe activarlo para que entre en funcionamiento. Pues bien, existe un tipo de complementos, denominado «plugins MU» (de must use, es decir, de ‘uso obligatorio’), que no requieren activación. Una vez creados, se suben por FTP al directorio /wp-content/mu-plugins, y voilà, su carga funcional se activa de forma automática, sin ninguna intervención posterior del usuario.
Los plugins MU son muy útiles para añadir a una instalación de WordPress una funcionalidad imprescindible que esta debe tener sin que medie ninguna intervención de sus usuarios. Normalmente responden a necesidades de personalización muy concretas y específicas, propias de cada caso individual. Durante la sesión que vamos a dedicar a las técnicas de personalización avanzada de WordPress presentaremos algunos ejemplos de este tipo de plugins, y explicaremos las razones y exigencias que han motivado su programación y puesta en funcionamiento.
A título de ejemplo, incluimos a continuación el plugin MU «Enlaces a cursos de WordPress en el PNTE», que ha sido programado recientemente por Eduardo Larequi (mediante GenerateWP, una magnífica herramienta online de enormes posibilidades), y añadido tanto a esta instalación de WordPress como a la que contiene los blogs de prácticas de los alumnos del curso. El propósito del plugin es muy simple: añadir a la barra de herramientas de WordPress una lista de los cursos que el PNTE ha dedicado a esta aplicación, para que sirvan a los docentes como material de consulta y referencia.
Los interesados en este tipo de plugins pueden analizar el código que aparece al final de este artículo, y también consultar los siguientes artículos:
- ¿Qué son los mu-plugins de WordPress?
- Aprende a usar mu-plugins en WordPress.
- What are WordPress MU-Plugins?
<?php /* Plugin Name: Enlaces a cursos de WordPress en el PNTE Plugin URI: https://www.educacion.navarra.es/web/pnte Description: Este plugin activa en la barra de herramientas de WordPress un menú de enlaces a los diversos cursos sobre WordPress elaborados por Eduardo Larequi, del PNTE, durante los años 2012, 2016, 2017 y 2018. Como es un plugin MU, se activa automáticamente. Version: 0.1 Author: Eduardo Larequi Author URI: https://www.educacion.navarra.es/web/pnte */ // El código ha sido elaborado a partir del generador de barras de herramientas del servicio online GenerateWP: https://generatewp.com/toolbar/ function elarequi_menu_cursos_wordpress_pnte() { global $wp_admin_bar; $args = array( 'id' => 'menu-principal-cursos-wp', 'title' => 'Cursos de WordPress en el PNTE', ); $wp_admin_bar->add_menu( $args ); $args = array( 'id' => 'curso-2012', 'parent' => 'menu-principal-cursos-wp', 'title' => 'Curso de WordPress 2012', 'href' => 'https://cursoswp.educacion.navarra.es/cursowp2012/', 'meta' => array( 'target' => '_blank', 'title' => 'Curso de WordPress 2012', ) ); $wp_admin_bar->add_menu( $args ); $args = array( 'id' => 'curso-2016', 'parent' => 'menu-principal-cursos-wp', 'title' => 'Curso de WordPress 2016', 'href' => 'https://cursoswp.educacion.navarra.es/cursowp2016/', 'meta' => array( 'target' => '_blank', 'title' => 'Curso de WordPress 2016', ) ); $wp_admin_bar->add_menu( $args ); $args = array( 'id' => 'curso-2017', 'parent' => 'menu-principal-cursos-wp', 'title' => 'Curso de WordPress 2017', 'href' => 'https://cursoswp.educacion.navarra.es/cursowp2017/', 'meta' => array( 'target' => '_blank', 'title' => 'Curso de WordPress 2017', ) ); $wp_admin_bar->add_menu( $args ); $args = array( 'id' => 'curso-2018', 'parent' => 'menu-principal-cursos-wp', 'title' => 'Curso de WordPress 2018', 'href' => 'https://cursoswp.educacion.navarra.es/cursowp2018/', 'meta' => array( 'target' => '_blank', 'title' => 'Curso de WordPress 2018', ) ); $wp_admin_bar->add_menu( $args ); } add_action( 'wp_before_admin_bar_render', 'elarequi_menu_cursos_wordpress_pnte', 999 );