1

My functions.php includes other function files located within a 'functions' directory.

Currently they're individually added, in the format of this example:

include('functions/login.php');

How can I modify this to include all files within the 'functions' directory, without listing them individually?

2 Answers 2

5

You can include/require all *.php files recursively using following function.

foreach(glob(get_template_directory() . "/*.php") as $file){
    require $file;
}

Alternatively You can use following function as-well.

$Directory = new RecursiveDirectoryIterator(get_template_directory().'functions/');
$Iterator = new RecursiveIteratorIterator($Directory);
$Regex = new RegexIterator($Iterator, '/^.+\.php$/i', RecursiveRegexIterator::GET_MATCH);

foreach($Regex as $yourfiles) {
    include $yourfiles->getPathname();
}

P.S Got the solution From Here.

7
  • @ JItendra Rana ... Thanks. can this be modified to include files from sub-directories inside the 'functions' directory?
    – glvr
    May 25, 2017 at 9:38
  • Do you want to include all the files recursively in all sub-directories ? May 25, 2017 at 10:00
  • Updated the answer to more elegant solution for recursive directories. Please check May 25, 2017 at 10:14
  • @ JItendra Rana ... Thanks. I'm getting various errors with the updated code, so will instead use your previous suggestion, which I think was: foreach(glob('/add_path_to_theme/wp-content/themes/theme-name/functions/*.php') as $file) {include $file;} If that is your code, it might be worth re-adding it to your update so others can access it.
    – glvr
    May 30, 2017 at 7:29
  • Updated the answer. Pls Check May 30, 2017 at 7:48
2

Here's how I did it from my functions.php file in WordPress:

/**
 * Functions
 * Require all PHP files in the /functions/ directory
 */
foreach (glob(get_template_directory() . "/functions/*.php") as $function) {
    $function= basename($function);
    require get_template_directory() . '/functions/' . $function;
}
0

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.