copy_dir( string $from, string $to, array $skip_list = array() )
Copies a directory from one location to another via the WordPress Filesystem Abstraction.
Description Description
Assumes that WP_Filesystem() has already been called and setup.
Parameters Parameters
- $from
-
(string) (Required) Source directory.
- $to
-
(string) (Required) Destination directory.
- $skip_list
-
(array) (Optional) A list of files/folders to skip copying.
Default value: array()
Return Return
Source Source
File: wp-admin/includes/file.php
1398 1399 1400 1401 1402 1403 1404 1405 1406 1407 1408 1409 1410 1411 1412 1413 1414 1415 1416 1417 1418 1419 1420 1421 1422 1423 1424 1425 1426 1427 1428 1429 1430 1431 1432 1433 1434 1435 1436 1437 1438 1439 1440 1441 | function copy_dir( $from , $to , $skip_list = array () ) { global $wp_filesystem ; $dirlist = $wp_filesystem ->dirlist( $from ); $from = trailingslashit( $from ); $to = trailingslashit( $to ); foreach ( ( array ) $dirlist as $filename => $fileinfo ) { if ( in_array( $filename , $skip_list ) ) { continue ; } if ( 'f' == $fileinfo [ 'type' ] ) { if ( ! $wp_filesystem -> copy ( $from . $filename , $to . $filename , true, FS_CHMOD_FILE ) ) { // If copy failed, chmod file to 0644 and try again. $wp_filesystem -> chmod ( $to . $filename , FS_CHMOD_FILE ); if ( ! $wp_filesystem -> copy ( $from . $filename , $to . $filename , true, FS_CHMOD_FILE ) ) { return new WP_Error( 'copy_failed_copy_dir' , __( 'Could not copy file.' ), $to . $filename ); } } } elseif ( 'd' == $fileinfo [ 'type' ] ) { if ( ! $wp_filesystem -> is_dir ( $to . $filename ) ) { if ( ! $wp_filesystem -> mkdir ( $to . $filename , FS_CHMOD_DIR ) ) { return new WP_Error( 'mkdir_failed_copy_dir' , __( 'Could not create directory.' ), $to . $filename ); } } // generate the $sub_skip_list for the subdirectory as a sub-set of the existing $skip_list $sub_skip_list = array (); foreach ( $skip_list as $skip_item ) { if ( 0 === strpos ( $skip_item , $filename . '/' ) ) { $sub_skip_list [] = preg_replace( '!^' . preg_quote( $filename , '!' ) . '/!i' , '' , $skip_item ); } } $result = copy_dir( $from . $filename , $to . $filename , $sub_skip_list ); if ( is_wp_error( $result ) ) { return $result ; } } } return true; } |
Expand full source code Collapse full source code View on Trac
Changelog Changelog
Version | Description |
---|---|
2.5.0 | Introduced. |
User Contributed Notes User Contributed Notes
You must log in before being able to contribute a note or feedback.
// Connecting to the filesystem.
if
( ! WP_Filesystem() ) {
// Unable to connect to the filesystem, FTP credentials may be required or something.
// You can request these with request_filesystem_credentials()
exit
;
}
// Don't forget that the target directory needs to exist.
// If it doesn't already, you'll need to create it.
global
$wp_filesystem
;
$wp_filesystem
->
mkdir
(
$target_dir
);
// Now copy all the files in the source directory to the target directory.
copy_dir(
$src_dir
,
$target_dir
);
Expand full source codeCollapse full source code