Is function_exists() considered a good practice when using 3.0+ functions?

Asking the core

WP currently has ~2.5k functions. So if you’d check for every function existence on runtime, then you’d really slow things down.

What is it for?

When you’re looking at wp core or some themes and it’s »pluggables«, then you’ll see that those are wrapped inside if ( function_exists('fn_nam') ) calls.

The reason to do this is to allow overwriting of functions in plugins, themes or child themes.

So if you want to let people alter stuff, then you’ll want to wrap them up, so they don’t get used when there’s already a (child theme) function replacing it.

Summed up

Don’t do this for core functions. Core functions (or some of their arguments) have the call to…

  1. _deprecated_argument($function, $version)
  2. _deprecated_file($file, $version)
  3. _deprecated_function($function, $version)

…for a reason: Save execution time, provide feedback for developers and a smooth running system for users as those won’t be outputted if WP_DEBUG isn’t set to TRUE.

So: Only do this for functions that you want people be able to replace.