Как выбрать определенные каталоги для Zip в Root Directory - PullRequest
2 голосов
/ 29 марта 2019

У меня есть несколько учетных записей хостинга с установленной WordPress в корневом каталоге и несколько дополнительных доменов с установленной Wordpress в подкаталогах. Я пытаюсь сжать только установку Wordpress в корне и думаю, что поиск wp-admin, wp-content и wp-includes может помочь мне достичь моей цели.

Мне стало лень, и я использовал скрипт, который нашел в учебнике, для сжатия установок в подкаталогах, но хотел бы больше узнать о том, как настроить таргетинг на конкретный каталог или файл. Может кто-нибудь указать мне хороший урок для этого?

Сценарий, приведенный ниже, хорошо распространен, хорошо работает для архивирования всего в каталоге и может исключать определенные файлы с помощью $ exclude_files [] = realpath ('имя файла'); но не совсем то, что мне нужно.

<?php 
/* Exclude Files */
$exclude_files = array();
$exclude_files[] = realpath( $zip_file );
$exclude_files[] = realpath( 'Move-My-Site-Zipper.php' );


// Get real path for our folder
$rootPath = realpath('');

// Initialize archive object
$zip = new ZipArchive();
$zip->open('file.zip', ZipArchive::CREATE | ZipArchive::OVERWRITE);

// Create recursive directory iterator
/** @var SplFileInfo[] $files */
$files = new RecursiveIteratorIterator(
    new RecursiveDirectoryIterator($rootPath),
    RecursiveIteratorIterator::LEAVES_ONLY
);

foreach ($files as $name => $file)
{
    $file_path = $file->getRealPath();
    // Skip directories (they would be added automatically)
    if (!$file->isDir() && !in_array( $file_path, $exclude_files ))
    {
        // Get real and relative path for current file
        $filePath = $file->getRealPath();
        $relativePath = substr($filePath, strlen($rootPath) + 1);

        // Add current file to archive
        $zip->addFile($filePath, $relativePath);
    }
}

// Zip archive will be created only after closing object
$zip->close();
?>
...