Recientemente, un usuario nos preguntó cómo marcar / comprobar si una función PHP existe antes de añadir un nuevo código a su sitio WordPress que dependa de ella.
Lo mejor de WordPress es su flexibilidad, que incluye la posibilidad de añadir tus propias funciones personalizadas a tu sitio web. Sin embargo, a veces, tu código personalizado puede no funcionar porque la función a la que hace referencia ya no existe.
En este artículo, le mostraremos cómo comprobar fácilmente si una función existe antes de añadirla a su tema de WordPress.
¿Por qué añadir “Si existe la función” a su código personalizado?
WordPress está escrito principalmente en el idioma de programación PHP. PHP es un idioma de programación del lado del servidor que se ejecuta en los servidores de su proveedor de alojamiento WordPress.
Dado 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 va mal, podría impedir que se cargara toda la página.
En WordPress, si una función que falta impide que el resto del código se ejecute, entonces se detiene y muestra un mensaje de error crítico o error fatal.
¿Qué puede hacer que una función deje de funcionar o falte de repente?
Es un error de WordPress más común de lo que crees.
Por ejemplo, digamos que uno de tus plugins de WordPress viene con una función que has añadido a la cabecera o al pie de página de tu tema. Desactivar el plugin hará que la función desaparezca y causará el error crítico en su sitio web de WordPress.
Dicho esto, echemos un vistazo a cómo comprobar fácilmente si una función existe antes de ejecutarla en los archivos de su tema de WordPress.
Comprobar si existe una función en WordPress
Por suerte, el idioma de programación PHP viene con un método incorporado para comprobar fácilmente la existencia de una función antes de ejecutarla.
Supongamos que tiene una función en WordPress que muestra la hora actual con información sobre la zona horaria. Aquí tienes un fragmento de código de ejemplo que puedes usar para probarlo.
Puedes añadirlo 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 sencilla de añadir código personalizado en WordPress.
Primero, necesitas instalar y activar el plugin gratuito WPCode. Si necesitas ayuda para hacerlo, consulta nuestra guía paso a paso para principiantes sobre cómo instalar un plugin de WordPress.
Una vez activado, debe ir a Fragmentos de código ” + Añadir frag mento en su escritorio de WordPress. Una vez allí, pase el ratón sobre la opción “Añadir su código personalizado (nuevo fragmento)” y haga clic en el botón “Usar fragmento” que aparece.
Esto abrirá una nueva página donde podrá añadir su fragmento de código personalizado. Escriba un título como “Mostrar hora actual con zona horaria” y, a continuación, pegue el fragmento de código siguiente en el panel 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>";
}
A continuación, debe seleccionar “Fragmento de código PHP” en el menú desplegable Tipo de código para asegurarse de que el código se ejecuta correctamente.
Por último, debe poner el conmutador Activar en la posición On y hacer clic en el botón “Guardar fragmento de código” para guardar su nuevo fragmento de código.
Para llamar a esta función, tendrá que añadir el siguiente código en cualquier lugar de su tema de WordPress donde desee mostrar la hora actual.
<?php wpb_show_timezone(); ?>
Así se veía en nuestro sitio web de pruebas.
Ahora bien, ¿qué pasaría si desapareciera el código responsable de ejecutar esta función?
La llamada a la función romperá tu sitio web así.
Añadamos una comprobación para asegurarnos de que este código solo se ejecuta cuando la función existe.
De nuevo, tendrá que añadir el código directamente al archivo functions.php de su tema o utilizar 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 comprueba si una función existe y devuelve True o False.
A continuación, añadimos una condición if-else para tomar las medidas oportunas en función 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 su sitio web con normalidad.
Esperamos que este artículo te haya ayudado a comprobar si una función existe en WordPress. También puedes consultar nuestra guía completa para diagnosticar problemas en WordPress o nuestra selección de los mejores editores de arrastrar y soltar para páginas de WordPress.
If you liked this article, then please subscribe to our YouTube Channel for WordPress video tutorials. You can also find us on Twitter and Facebook.
Rakib
really helpful
Joana Pereira
Good call Kovshenin. I know exactly what you mean because I was using a custom function with contact form 7 (to retrieve the ip address on each form) and every time the plugin was updated, the theme broke.
Thanks for the tip
Joana Pereira
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