我想问题是你的relative 路径当您访问/wp-admin/
, 它将尝试定位wp-content/themes/vac3/acf
在里面,它在那里找不到它。请在的帮助下尝试完整路径__DIR__
或get_template_directory()
–更多详细信息blog post. 如果稍后删除acf/
子目录?你可能想用is_dir()
. 此外,您可能需要使用FilesystemIterator
(the parent class) constants 和使用FilesystemIterator::SKIP_DOTS
跳过.
和..
指针和FilesystemIterator::FOLLOW_SYMLINKS
(PHP v5.3.1以上)以…遵循符号链接。您可能还想使用FilesystemIterator::CURRENT_AS_PATHNAME
避免在只需要文件路径时返回对象。
如果后端不需要此功能,可以将其挂接到前端或使用! is_admin()
检查挂钩内部。您还应该注意只在需要的地方加载这个。我还想知道这是否应该是一个插件?还有其他选择,如自动加载。
通常要做的事情是将所有内容打包到一个回调中,该回调附加到某个过滤器或挂钩上。示例:
// Use the proper filter – below just as example
add_filter( \'wp_loaded\', function() {
// Only serve for public requests
if ( is_admin() )
return;
$Iterator = new RecursiveIteratorIterator(
new RecursiveDirectoryIterator( get_template_directory().\'/acf\' )
);
$Regex = new RegexIterator(
$Iterator,
\'/^.+\\.php$/i\',
RecursiveRegexIterator::GET_MATCH
);
foreach ( $Regex as $file )
require_once $file[0];
} );
如果你只使用
FilesystemIterator
如果您只有一个文件夹需要从中获取文件–非递归:
add_action( \'wp_loaded\', function() {
if ( is_admin() )
return;
$files = new \\FilesystemIterator(
get_template_directory().\'/acf\',
\\FilesystemIterator::SKIP_DOTS
| FilesystemIterator::FOLLOW_SYMLINKS
| FilesystemIterator::CURRENT_AS_PATHNAME
);
foreach ( $files as $file )
{
/** @noinspection PhpIncludeInspection */
! $files->isDir() and include $files->getRealPath();
}
} );