$base = dirname(__FILE__).'/themes/';
$target = dirname(STYLESHEETPATH).'/';
$directory_folders = new DirectoryIterator($base);
foreach ($directory_folders as $folder)
{
if (!$folder->isDot()) {
echo '<p>source: '.$folder->getRealPath();
//returns: C:\xampplite\htdocs\test\wp-content\plugins\test\themes\testtheme-1
echo '<br>target: '.$target;
//returns: C:\xampplite\htdocs\test/wp-content/themes/
copy($folder->getRealPath(), $target);
//returns: Error. The first argument to copy() function cannot be a directory
}
}die;
ОБНОВЛЕНИЕ: В предлагаемом ответе Паскаля, вот мой измененный код. Это работает.Первый аргумент функции copy() не может быть каталогом?
function recurse_copy(){
$src = dirname(__FILE__).'/themes/';
$dst = dirname(STYLESHEETPATH).'/';
$dir = opendir($src);
@mkdir($dst);
while(false !== ($file = readdir($dir)))
{
if (($file != '.') && ($file != '..'))
{
if (is_dir($src . '/' . $file)) {
recurse_copy_recurse($src . '/' . $file,$dst . '/' . $file);
}
else {
copy($src . '/' . $file,$dst . '/' . $file);
}
}
}
closedir($dir);
}
function recurse_copy_recurse($src,$dst){
$dir = opendir($src);
@mkdir($dst);
while(false !== ($file = readdir($dir)))
{
if (($file != '.') && ($file != '..'))
{
if (is_dir($src . '/' . $file)) {
recurse_copy_recurse($src . '/' . $file,$dst . '/' . $file);
}
else {
copy($src . '/' . $file,$dst . '/' . $file);
}
}
}
closedir($dir);
}
спасибо! Работает в обаянии. +1 для быстрой справки и справки. –
@Scott приветствую :-) * (Я отредактировал свой ответ с дополнительной заметкой о вашей рекурсивной функции) * –
Да, я понял ошибку сразу после того, как обновил свой вопрос. Вы, должно быть, видели это, прежде чем я исправил его :-) –