Tutoriales de WordPress de Confianza, cuando más los necesitas.
Guía para Principiantes de WordPress
Copa WPB
25 Millones+
Sitios web que usan nuestros plugins
16+
Años de experiencia en WordPress
3000+
Tutoriales de WordPress de expertos

Mejor práctica: Comprueba si la función existe al añadir en un tema de WordPress

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.

Comprobar si una función existe en WordPress

¿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.

Mensaje de error crítico de WordPress

¿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.

Añadir código personalizado en WPCode

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>";
}
Pega el fragmento de código en WPCode

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.

Activar y guardar el 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.

La función se ejecuta normalmente

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.

Error crítico en WordPress

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.

Función faltante omitida

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.

Descargo de responsabilidad: Nuestro contenido es compatible con el lector. Esto significa que si haces clic en algunos de nuestros enlaces, podemos ganar una comisión. Consulta cómo se financia WPBeginner, por qué es importante y cómo puedes apoyarnos. Aquí está nuestro proceso editorial.

El Kit de herramientas definitivo para WordPress

Obtén acceso GRATUITO a nuestro kit de herramientas: ¡una colección de productos y recursos relacionados con WordPress que todo profesional debería tener!

Interacciones del lector

7 CommentsLeave a Reply

  1. ¡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

  2. 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?

    • 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

  3. 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

    • ¡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.

  4. 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 :)

Deja una respuesta

Gracias por elegir dejar un comentario. Ten en cuenta que todos los comentarios son moderados de acuerdo con nuestra política de comentarios, y tu dirección de correo electrónico NO será publicada. Por favor, NO uses palabras clave en el campo del nombre. Tengamos una conversación personal y significativa.