Wordpress - Why use if function_exists?
Checking to see if built in WordPress functions exist before calling them is for backward compatibility which IMHO is not needed.
So if you see if ( function_exists( 'register_nav_menus' ) )
the theme author is supporting versions earlier than 3.0.
You still sometimes see if ( function_exists( 'dynamic_sidebar' ) )
Why? I couldn't tell you because dynamic_sidebar was introduced in 2.2.
Another reason to use it is to make your theme or plugin pluggable. A pluggable function is one that can be overridden in a child theme or another plugin.
This is done on the definition not the call and you use the ! operator to make sure it doesn't already exist before you define it.
if ( ! function_exists( 'my_awesome_function' ) ) {
/**
* My Awesome function is awesome
*
* @param array $args
* @return array
*/
function my_awesome_function( $args ) {
//function stuff
return array();
}
}
When this is done a child theme or other plugin can override that function with there own.
The function_exists
function is not an other way to load the function like add_action
its for check your code to see that there are no other function with that same name so it will not break your code. From php.net:
Checks the list of defined functions, both built-in (internal) and user-defined, for function_name.
If you have the same function twice in your code it will break, thats why you prefix Your function with something else than wp_.
Read more: http://php.net/manual/en/function.function-exists.php