WP_Filesystem_Base::search_for_folder()
Locates folder на remote filesystem.
Expects Windows sanitized path.
Метод класу: WP_Filesystem_Base{}
Хуків немає.
Повертає
Строку|false
. Місце розташування remote path, false to cease looping.
Використання
$WP_Filesystem_Base = новий WP_Filesystem_Base ();
$WP_Filesystem_Base -> search_for_folder ( $folder , $base , $loop );
- $folder (рядок) (обов’язковий)
- The folder to locate.
- $base (рядок)
- Докладно до початку пошуку від.
За замовчуванням: ‘.’
- $loop (true|false)
- Якщо функція була використана. Internal use only.
Типово: false
список змін
З версії 2.7.0 | Введено. |
Код WP_Filesystem_Base::search_for_folder() WP Filesystem Base::search for folder WP 6.2
public function search_for_folder ( $folder , $base = '.' , $loop = false ) {
if ( empty ( $base ) || '.' === $base ) {
$base = trailingslashit ( $this -> cwd ( )));
}
$ folder = untrailingslashit ($ folder);
if ( $this ->verbose) {
/* translators: 1: Folder to locate, 2: Folder to start searching from. */
printf ( "n" . __ ( 'Looking for %1$s in %2$s' ) . "<br />n" , $folder , $base );
}
$ folder_parts = explode ( '/' , $ folder );
$ folder_part_keys = array_keys ($ folder_parts);
$last_index = array_pop ($ folder_part_keys);
$last_path = $folder_parts [ $last_index ];
$files = $this -> dirlist ( $base );
foreach ( $folder_parts as $index => $key ) {
if ( $index === $last_index ) {
continue ; // We want this to be caught the next code block.
}
/*
* Working from /home/ to /user/ to /wordpress/ see if that file exists within
* the current folder, If it's found, зміна into it і follow through looking
* for it. Якщо це неможливо WordPress down, що route, вона продовжується надалі
* folder level, and see if that matches, and so on. If it reaches the end, and still
* Cant find it, it'll return false for entire function.
*/
if ( isset ( $files [ $key ] ) ) {
// Let's try that folder:
$newdir = trailingslashit ( path_join ( $base , $key ));
if ( $this ->verbose) {
/* translators: %s: Directory name. */
printf ( "n" . __ ( 'Changing to %s' ) . "<br />n" , $newdir );
}
// Тільки search for remaining path tokens in directory, no full path again.
$newfolder = implode ( '/' , array_slice ( $folder_parts , $index + 1 ));
$ret = $this -> search_for_folder ( $newfolder , $newdir , $loop );
if ($ ret) {
return $ ret ;
}
}
}
// Тільки check this as a last resort, to prevent locating the incorrect install.
// All above procedures will fail quickly if this is the right branch to take.
if ( isset ( $files [ $last_path ] ) ) {
if ( $this ->verbose) {
/* translators: %s: Directory name. */
printf ( "n" . __ ( 'Found %s' ) . "<br />n" , $base . $last_path );
}
return trailingslashit ( $base . $last_path );
}
// Prevent this function from looping again.
// Немає потреби у процесі, якщо ми вже вивчалися в `/`.
if ( $loop || '/' === $base ) {
return false ;
}
// Як останній останній світ, Змінити назад до / якщо folder wasn't found.
// Це дає змогу, коли CWD є /home/user/ but WP is at /var/www/....
return $this -> search_for_folder ( $folder , '/' , true );
}