Añadir código PHP en WordPress

Introducción

Mi intención es poner un número variable en una página de WordPress. En concreto quiero poner mi edad, de forma que reste la fecha actual de mi fecha de nacimiento, para no tener que actualizarlo manualmente con el paso del tiempo.

No he encontrado ninguna forma de hacerlo de forma automática, por lo que me decanto por hacerlo en PHP, pero me encuentro con que no es posible añadir código PHP en WordPress alegremente.

El primer método que he encontrado es a través de functions.php

Este es el método que se menciona en muchos blogs. Se trata de acceder al archivo functions.php que se encuentra en el directorio de nuestro theme, en wp-content/themes/mitheme.

Pero no se recomienda este método ya que enlaza los cambios que realicemos con el theme que estamos utilizando, y si cambiamos de theme estos cambios se perderán y deberemos implementarlos de nuevo.

Si se hacen cambios en el functions.php, se tendrá que hacer con un childtheme.

Otra forma es creando nuestro propio plugin, pero lo descarto por ahora.

Elmétodo más sencillo que he encontrado es con un plugin de snippets.

Parece que es el mejor método de insertar PHP en WordPress. Se trata de usar un plugin de snippets que guarda todas nuestras funciones de PHP que podemos activar y desactivar en cualquier momento. Además, como se trata de un plugin, los cambios no se perderán si cambiamos de theme.

Plugin «Insert PHP»

Parece ser que hay varios complementos para insertar código en PHP, yo voy a utilizar Insert PHP Code Snippet que parece ser el más antiguo y que cumple con su función. Hay versión de pago por 19$ pero con la gratuita parece ser suficiente para mi propósito.

Vamos a añadir nuevo complemento, buscamos «insert php», lo instalamos y activamos.

Ahora tenemos una nueva opción en el menú denominada «XYZ PHP Code», la pulsamos y crearemos nuestro primer script pulsando el botón «Add New PHP Code Snippet».

En el formulario que nos aparece sólo tendremos que rellenar dos campos obligatorios, «Tracking Name» con el alias que usaremos para este código y «PHP code» con el código en PHP.

Pulsamos el botón «Create» y ya lo tendremos creado. Por defecto nos añade el inicio «<?php» de forma automática.

Ahora, en la lista de scripts creados podremos ver el que acabamos de crear y tendremos que copiar el shortcode que nos ha generado en la columna denominada «Snippet Short Code».

El código PHP

En mi caso, como mi intención es mostrar mi edad, en años, el código PHP que he puesto en el paso anterior, en el campo «PHP code», es el siguiente:

function get_format($df) {
$str = '';
$str .= ($df->invert == 1) ? ' - ' : '';
if ($df->y > 0) {
// years
$str .= ($df->y > 1) ? $df->y . ' años ' : $df->y . ' año ';
} if ($df->m > 0) {
// month
If ($str != "") $str .= ($df->d > 0) ? ", " : " y ";
$str .= ($df->m > 1) ? $df->m . ' meses ' : $df->m . ' mes ';
} if ($df->d > 0) {
// days
If ($str != "") $str .= " y ";
$str .= ($df->d > 1) ? $df->d . ' días' : $df->d . ' día';
}
echo $str;
}
//Como utilizar la función: Calcula los días de diferencia desde tu nacimiento y pásale el objeto diff a la función que acabamos de crear, get_format()
$date1 = new DateTime("1977-05-19");
$date2 = new DateTime("now");
$diff = $date1->diff($date2);
echo get_format($diff);

Lógicamente, en lugar de «1977-05-19» tendremos que poner nuestra fecha de nacimiento, en formato año, mes y día, separado con guiones, y el resultado será que nos mostrará en pantalla el número de años, meses y días transcurridos hasta la fecha de hoy. Podría modificarse facilmente para mostrar también las horas, minutos y segundos o dejarlo sólo en los años.

El shortcode

Y como el alias que yo le he puesto es «Edad», el shortcode que me ha generado es «[xyz-ips snippet="Edad"]«. Por tanto, en el editor de mi página podré poner algo así como:

Mi edad es de [xyz-ips snippet="Edad"].

Y quedará algo así como:

Mi edad es de 46 años 2 meses 3 días.

Conclusión

Para poder insertar código PHP en WordPress recomiendo hacerlo a través de un plugin, de forma que podremos asociar cada trozo de código en PHP a un shortcode, que será el que tendremos que invocar cuando lo necesitemos.

Bibliografía

Calcular la diferencia entre dos fechas con PHP. Programación en Castellano