copy_dir()
Copies a directory from one location to another via the WordPress Filesystem Abstraction.
Assumes that WP_Filesystem() has already been called and setup.
The functionality of this function is based on the file system API which is based on the core class WP_Filesystem_Base. This core class is extended by the other class suitable for the server your site works on. The resulting object is placed in the global variable $wp_filesystem.
To get the list of possible methods of $wp_filesystem, see the core class:
and other classes that inherit it:
No Hooks.
Return
true|WP_Error
. True on success, WP_Error on failure.
Usage
copy_dir( $from, $to, $skip_list );
- $from(string) (required)
- Source directory.
- $to(string) (required)
- Destination directory.
- $skip_list(string[])
- An array of files/folders to skip copying.
Default: array()
Examples
#1 Copy one directory to another
Copy avatars directory from uploads to its subdirectory with the number of the current month.
global $wp_filesystem; $dir = wp_get_upload_dir(); /* Array( [path] => /home/kama.com/html/wp-content/uploads/2018/05 [url] => //kama.com/wp-content/uploads/2018/05 [subdir] => /2018/05 [basedir] => /home/kama.com/html/wp-content/uploads [baseurl] => https://wp-kama.com/wp-content/uploads [error] => ) */ $from = $dir['basedir'] .'/avatars'; // $to can't be a direct path, because so FTP and SSH won't work $to = $wp_filesystem->find_folder( $dir['path'] ); copy_dir( $from, $to );
#2 Skip some files
The same, but skip index.php, index.html files.
global $wp_filesystem; $dir = wp_get_upload_dir(); $from = $dir['basedir'] .'/avatars'; // $to can't be a direct path, because so FTP and SSH won't work $to = $wp_filesystem->find_folder( $dir['path'] ); $skip_list = array( 'index.php', 'index.html' ); copy_dir( $from, $to, $skip_list );
Notes
- Global. WP_Filesystem_Base. $wp_filesystem WordPress filesystem subclass.
Changelog
Since 2.5.0 | Introduced. |