Intereting Posts
Некоторые изображения не привязаны при настройке ссылки на медиа-изображение Существуют ли какие-либо скрипты, классы и / или функции, встроенные в WP для плагина для экспорта / импорта сохраненных данных из wp_options? SHOPP Custom Post Type, условные теги Только для WordPress Как создать тему, как я могу позволить пользователю изменять изображение за пределами содержимого пост / страницы? Получите все изображения в сообщении и комментариях, таких как Twitter до заголовка сообщения Получить категории дочерних категорий пользовательской таксономии? Как я могу использовать AJAX для сохранения / обновления формы виджетов? Когда нужно использовать add_action ('init') vs add_action ('wp_enqueue_scripts') Вход Ajax без перенаправления / перезагрузки Как разделить сообщение на более чем одну страницу, используя <! – nextpage ->? Вставить Captcha Code info Любая форма (созданная из плагина) Экспорт базы данных WP для импорта с использованием WP-CLI в Vagrant Box Как использовать add_theme_support ('html5')? Плагин электронной почты для электронной почты не будет настраиваться при попытке импортировать виджет

Правильный способ загрузки файла из источника в пункт назначения

Я пытаюсь загрузить файл из одного места в другое. Код работает отлично. Вот фрагмент кода:

Функция помощника – создать каталог в /uploads/{$dir_name}/ и вернуть пути.

 /** * Create folder in /uploads/{$dir_name}/ * @return array() */ function get_dirpath( $dir_name = 'test' ) { $wp_info = wp_upload_dir(); // SSL workaround. if ( is_ssl() ) { $wp_info['baseurl'] = str_ireplace( 'http://', 'https://', $wp_info['baseurl'] ); } // Build the paths. $dir_info = array( 'path' => $wp_info['basedir'] . '/' . $dir_name . '/', 'url' => $wp_info['baseurl'] . '/' . $dir_name . '/' ); // Create the upload dir if it doesn't exist. if ( ! file_exists( $dir_info['path'] ) ) { // Create the directory. mkdir( $dir_info['path'] ); // Add an index file for security. file_put_contents( $dir_info['path'] . 'index.html', '' ); } return $dir_info; } 

Путь – 1 – Использование функции PHP copy(){отлично работает} .

 $dir_info = get_dirpath( 'test' ); $remote_file = 'http://img.wordpressask.com/uploads/googlelogo_color_272x92dp.png'; $local_file = trailingslashit( $dir_info['path'] ) . basename( $remote_file ); if ( copy( $remote_file, $local_file ) ) { // Successfully copy file from URL } 

Путь – 2 – Использование WordPress WP_Filesystem_Direct{отлично работает}

 require_once ABSPATH . '/wp-admin/includes/class-wp-filesystem-base.php'; require_once ABSPATH . '/wp-admin/includes/class-wp-filesystem-direct.php'; $my_filesystem = new WP_Filesystem_Direct( array() ); if ( $my_filesystem->copy( $remote_file, $local_file, true) ) { // Successfully copy file from URL } 

Оба, работает отлично.

Этот фрагмент кода:

  • Создайте файл googlelogo_color_272x92dp.png
  • В каталоге /wp-content/uploads/test/
  • Из источника http://img.wordpressask.com/uploads/googlelogo_color_272x92dp.png

Я думаю, мне нужно использовать Way - 2 . Но правильно ли это include files и создать new WP_Filesystem_Direct() ?

Я немного искал и нашел Копировать файл из плагина в мой каталог темы и Как использовать функцию copy () и вставить файл в каталог / wp-content / themes

Но, Не найдено никакого решения / фрагмента, которые используют Way - 2 .

Отредактировано:global $wp_filesystem делает то же самое с way - 2 . Но, его не работает (не знаю почему!).


обновленный

Кроме того, как получить правильное сообщение об ошибке, если он не может загрузить файл?

Solutions Collecting From Web of "Правильный способ загрузки файла из источника в пункт назначения"

Нет необходимости использовать API файловой системы WP, если вы пытаетесь получить доступ к каталогам, к которым веб-сервер имеет полный доступ. Это необходимо, главным образом, только тогда, когда вы хотите писать в каталоги, которые имеют ограниченный доступ, как каталог плагинов. С этой точки зрения два фрагмента совпадают.

То, что вы потенциально делаете неправильно, пытается получить доступ к удаленному ресурсу с помощью API файлов. Ваш первый фрагмент не будет работать на некоторых хостах, и я не уверен, будет ли работать API файловой системы WP. Более надежным способом является использование wordpress HTTP для получения содержимого файла с помощью wp_remote_get и сохранения его в папках uploads.

… последнее, что не нарушают авторские права, слишком много людей слишком много платят за такие вещи.