Uno de nuestros lectores más técnicos nos preguntó recientemente cómo verificar la existencia de una función PHP antes de integrar nuevo código en un sitio de WordPress. Esto es importante para asegurar que su sitio funcione sin problemas y evite errores.
Una de las fortalezas de WordPress es su flexibilidad y el equipo de WPBeginner agrega regularmente funciones personalizadas para mejorar la funcionalidad de nuestro sitio. Entendemos que el código PHP personalizado puede fallar si llama a una función que ya no existe o que aún no se ha definido.
En este artículo, le mostraremos cómo verificar fácilmente si una función existe antes de agregarla a su tema de WordPress, lo que le permitirá evitar posibles errores en su código.

¿Por qué agregar 'Si la función existe' a su código personalizado?
WordPress está escrito principalmente en el lenguaje de programación PHP. PHP es un lenguaje de programación del lado del servidor que se ejecuta en los servidores de su proveedor de hosting de WordPress.
Debido a que el código PHP tiene que terminar de ejecutarse antes de que la página se cargue en los navegadores de sus visitantes, tiene ciertas limitaciones. Una de esas limitaciones es que si algo sale mal, podría impedir que toda la página se cargue.
En WordPress, si una función faltante impide que el resto del código se ejecute, se detiene y muestra un mensaje de error crítico o error fatal.

¿Qué puede hacer que una función deje de funcionar repentinamente o desaparezca?
Es un error común de WordPress más de lo que podrías pensar.
Por ejemplo, digamos que uno de tus plugins de WordPress viene con una función que has agregado al área de encabezado o pie de página de tu tema. Desactivar el plugin hará que la función desaparezca y cause el error crítico en tu sitio web de WordPress.
Dicho esto, veamos cómo verificar fácilmente si una función existe antes de ejecutarla en los archivos de tu tema de WordPress.
Verificar si una función existe en WordPress
Afortunadamente, el lenguaje de programación PHP viene con un método incorporado para verificar fácilmente la existencia de una función antes de ejecutarla.
Digamos que tienes una función de WordPress que muestra la hora actual con información de zona horaria. Aquí tienes un fragmento de código de ejemplo que puedes usar para intentarlo.
Puedes agregarlo directamente al archivo functions.php de tu tema, pero en este tutorial, usaremos el plugin de fragmentos de código WPCode porque es la forma más segura y fácil de agregar código personalizado en WordPress.
Primero, necesitas instalar y activar el Plugin Gratuito WPCode. Si necesitas ayuda para hacer esto, consulta nuestra guía paso a paso para principiantes sobre cómo instalar un plugin de WordPress.
Tras la activación, debes ir a Fragmentos de Código » + Añadir Fragmento en tu panel de WordPress. Una vez allí, pasa el ratón sobre la opción ‘Añade tu código personalizado (Nuevo Fragmento)’ y luego haz clic en el botón ‘Usar fragmento’ que aparece.

Esto abrirá una nueva página donde puedes añadir tu fragmento personalizado. Escribe un título como ‘Mostrar hora actual con zona horaria’ y luego pega el fragmento de código a continuación en el panel de Vista Previa del Código.
//display current time with timezone
function wpb_show_timezone() {
$better_time = current_time('F j, Y g:i a e');
echo "<p>The current time is " . $better_time ."</p>";
}

Después de eso, debes seleccionar ‘Fragmento PHP’ en el menú desplegable Tipo de Código para asegurarte de que el código se ejecute correctamente.
Finalmente, debes cambiar el interruptor Activar a la posición Activado y hacer clic en el botón ‘Guardar Fragmento’ para almacenar tu nuevo fragmento de código.

Para llamar a esta función, necesitarás agregar el siguiente código en cualquier parte de tu tema de WordPress donde quieras mostrar la hora actual.
<?php wpb_show_timezone(); ?>
Así es como se veía en nuestro sitio web de pruebas.

Ahora, ¿qué sucedería si el código responsable de ejecutar esta función desaparece?
La llamada a la función romperá tu sitio web de esta manera.

Agreguemos una verificación para asegurarnos de que este código solo se ejecute cuando la función exista.
Nuevamente, necesitarás agregar el código directamente al archivo functions.php de tu tema o usar un plugin de fragmentos de código como WPCode (recomendado):
<?php
if( function_exists('wpb_show_timezone')) {
wpb_show_timezone();
} else {
// do nothing
}
?>
En este código, estamos utilizando la función function_exists(). Esta función verifica si una función existe y devuelve Verdadero o Falso.
Luego agregamos una condición if-else para tomar la acción apropiada dependiendo de la disponibilidad de la función.
Ahora, cuando la función ya no esté disponible, el código simplemente la omitirá y WordPress podrá cargar el resto de tu sitio web normalmente.

Esperamos que este artículo te haya ayudado a aprender cómo verificar si una función existe en WordPress. También puedes consultar nuestra guía sobre cómo mostrar código fácilmente en tu sitio de WordPress o nuestra selección experta de los mejores editores de código para Mac y Windows para editar archivos de WordPress.
Si te gustó este artículo, suscríbete a nuestro canal de YouTube para obtener tutoriales en video de WordPress. También puedes encontrarnos en Twitter y Facebook.


kzain
¡Me ahorró un dolor de cabeza! No te imaginas cuántas veces he agregado código solo para que mi tema falle porque una función no estaba presente. Es súper fácil de implementar y mantiene mi código limpio.
Gracias por la clara explicación
Jiří Vaněk
Me gustaría preguntar, si PHP me da un error sobre una función PHP inexistente, ¿se puede habilitar dicha función o tiene que hacerlo el administrador del servidor? ¿Y es posible que la función dependa de la versión de PHP? Es decir, ¿que una determinada función esté disponible en una versión de PHP pero no en otra?
Soporte de WPBeginner
En ese caso, la función no existe, por lo que necesitarías investigar cuál es la función específica para ayudar a encontrar qué está causando el error. Después de eso, puedes consultar con el soporte sobre qué está causando el error o eliminar lo que lo está causando.
Administrador
Rakib
muy útil
Joana Pereira
Buena idea, Kovshenin. Sé exactamente a qué te refieres porque estaba usando una función personalizada con Contact Form 7 (para obtener la dirección IP en cada formulario) y cada vez que se actualizaba el plugin, el tema se rompía.
Gracias por el consejo
Joana Pereira
kzain
¡Me ha pasado lo mismo con las actualizaciones de plugins que rompen temas! Usar `function_exists()` es definitivamente un cambio de juego para prevenir esos dolores de cabeza.
kovshenin
Right, only please stop checking for dynamic_sidebar with function_exists in WordPress themes, unless you need to support WordPress 2.2 and below, which I *highly* doubt. Also with the user photo plugin, the whole approach seems to be wrong and redundant to me, it looks like many developers are missing the whole point of pluggable functions…. Oh well