как получить путь к изображениям в папке uploads для использования в плагине

12 дек. 2012 г., 19:06:48
Просмотры: 56.2K
Голосов: 10

У меня есть папка с изображениями в /wp-content/uploads. Также у меня есть файл плагина в /wp-content/plugins. Я хочу получить доступ к изображениям, хранящимся в /wp-content/uploads, и использовать их в файле плагина.

Я пробовал:

echo'<img src="../../USER_PHOTOS/ronny'" href="#"></img>';

Может кто-то показать, как я могу получить путь к этим изображениям? Спасибо.

0
Все ответы на вопрос 5
0

Если я не ошибаюсь, вы можете попробовать функцию wp_uploads_dir, например так:

$uploads = wp_upload_dir(); 

echo '<img src="' . esc_url( $uploads['baseurl'] . '/USER_PHOTOS/ronny/' ) . '" href="#">';
12 дек. 2012 г. 19:32:35
0

К сожалению, существует документированная ошибка, когда функция wp_upload_dir() не учитывает https (ssl). Моё предложение — написать обёртку, которая удаляет протокол из возвращаемого URL, чтобы сделать его адаптируемым к окружению:

function wp_upload_dir_url() {
  $upload_dir = wp_upload_dir();
  $upload_dir = $upload_dir['baseurl'];
  return preg_replace('/^https?:/', '', $upload_dir);
};
echo(wp_upload_dir_url() . '/2017/01/my-img.jpg');
// выводит что-то вроде '//mysite.test/wp-content/uploads/2017/01/my-img.jpg'
// что является абсолютно допустимым значением для атрибута img src

Если вас беспокоит падение производительности из-за многократного использования preg_replace(), то установите константу в файле functions.php:

define('WP_UPLOAD_DIR_URL', wp_upload_dir_url() . '/');
17 апр. 2017 г. 22:35:03
0

Dan S отмечает в тикете trac, что функция wp_upload_dir() не поддерживает https. На моих сайтах это не подтвердилось, но если вы столкнулись с этой проблемой, то можете добавить фильтр к upload_dir и вручную возвращать правильный протокол, используя условие is_ssl().

add_filter( 'upload_dir', function( $upload_dir ){
  return array_map( function( $value ) {
    return is_ssl() ?
      str_replace( 'http://', 'https://', $value ) :
      str_replace( 'https://', 'http://', $value );
  }, $upload_dir );
}, 10, 1 );

После этого вы можете продолжать использовать wp_upload_dir() как обычно.

Как указано здесь, если у вас нет особых соображений по производительности, следует использовать https://.

18 апр. 2017 г. 00:18:04
0

Я нашел ответ. Я использовал wp_upload_dir(); Кодекс WordPress

12 дек. 2012 г. 19:30:33
0

Вот что я использовал для доступа к файлу изображения с именем "rock_01.jpg", загруженному в папку WordPress "uploads/complete-theme/"

<?php $upload_dir = wp_upload_dir(); ?>
<img src="<?php echo $upload_dir['baseurl'] . '/complete-theme/rock_01.jpg'; ?>" />

Это сработало, как и ожидалось.

16 окт. 2016 г. 07:03:07