¿Por qué usar function_exists en WordPress? | Explicación y mejores prácticas
He notado que muchos desarrolladores de temas de WordPress usan esto en el archivo functions.php
if (function_exists('register_nav_menus')) {
register_nav_menus (array('primary' => 'Navegación del encabezado'));
}
En mi caso, siempre uso add_action para cada función que utilizo en functions.php
Así que, el código anterior lo escribiría como:
add_action('init', 'my_register_nav_menus');
function my_register_nav_menus() {
register_nav_menus (array('primary' => 'Navegación del encabezado'));
}
Tengo dos preguntas:
¿Por qué usar la sentencia if en el primer método?
¿Cuál es la forma correcta?

Verificar si las funciones integradas de WordPress existen antes de llamarlas es para compatibilidad con versiones anteriores, lo cual en mi opinión no es necesario.
Así que si ves if ( function_exists( 'register_nav_menus' ) )
, el autor del tema está dando soporte a versiones anteriores a la 3.0.
Aún a veces ves if ( function_exists( 'dynamic_sidebar' ) )
¿Por qué? No podría decirte porque dynamic_sidebar se introdujo en la versión 2.2.
Otra razón para usarlo es hacer que tu tema o plugin sea "pluggable". Una función pluggable es aquella que puede ser sobrescrita en un tema hijo o en otro plugin.
Esto se hace en la definición, no en la llamada, y se usa el operador ! para asegurarse de que no exista antes de definirla.
if ( ! function_exists( 'my_awesome_function' ) ) {
/**
* Mi función asombrosa es asombrosa
*
* @param array $args
* @return array
*/
function my_awesome_function( $args ) {
//contenido de la función
return array();
}
}
Cuando se hace esto, un tema hijo u otro plugin puede sobrescribir esa función con la suya propia.

La función function_exists
no es una forma alternativa de cargar una función como add_action
, sirve para verificar en tu código que no exista otra función con el mismo nombre y así evitar que se rompa tu código. Según php.net:
Comprueba la lista de funciones definidas, tanto internas como definidas por el usuario, para ver si existe function_name.
Si tienes la misma función dos veces en tu código, esto lo romperá, por eso debes prefijar tus funciones con algo diferente a wp_.
Lee más: http://php.net/manual/es/function.function-exists.php

puedes usar http://php.net/function_exists
if(function_exists('my_function')){
// my_function está definida
}
O si quieres ver todas las funciones disponibles, también puedes imprimirlas todas,
echo "<pre>"; print_r(get_defined_functions());
imprime en la página y puedes buscar esa función; si no aparece en la lista significa que no está disponible para usar.
Puede que necesites activar la extensión para una biblioteca en particular.

function_exists
debe usarse después del nombre de la función en un tema, no antes.
add_action( 'loop_start', 'add_slider' );
function add_slider() {
if ( function_exists( 'soliloquy' ) ) {
soliloquy( 'slider', 'slug' );
}
}
Esto verifica que el plugin esté activo antes de mostrar una función y/o marcado, de lo contrario podrías obtener un error como llamada a función indefinida.

php.net lo define como
(PHP 4, PHP 5, PHP 7) function_exists — Devuelve TRUE si la función dada ha sido definida
Debo estar de acuerdo con Michelle en el uso, ya que solo deberías usar esta verificación para algo similar a la comprobación de tipo; por lo tanto, estarías buscando si una función existe (en esa página o desde cualquier cosa llamada en esa página/archivo de referencia) para saber si es seguro ejecutar otra función o analizar algún HTML de plantilla posiblemente.
Como alguien mencionó, se usa comúnmente para verificar si tu archivo/tema (usando WordPress) es capaz de ejecutar la solicitud necesaria. Lo he usado para verificar si un tema tiene una parte de plantilla específica.
if ( function_exists( 'register_sidebar' ) ) {
get_sidebar();
}
