如何获取要在插件中使用的Uploads文件夹中图像的路径

时间:2012-12-12 作者:Ronny K

我有一些包含图像的文件夹/wp-content/uploads. 我还有一个插件文件/wp-content/plugins. 我想检索存储在中的图像/wp-content/uploads 并在插件文件中使用它们。

我试过了

echo\'<img src="../../USER_PHOTOS/ronny\'" href="#"></img>\';
有人能告诉我如何获得这些图像的路径吗?谢谢

5 个回复
SO网友:Andy Adams

如果我没弄错的话,你可以试试wp_uploads_dir 功能,如:

$uploads = wp_upload_dir(); 

echo \'<img src="\' . esc_url( $uploads[\'baseurl\'] . \'/USER_PHOTOS/ronny/\' ) . \'" href="#">\';

SO网友:Dan S

不幸的是,有一个bug 哪里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\');
// outputs something like \'//mysite.test/wp-content/uploads/2017/01/my-img.jpg\'
// which is perfectly acceptable as an img src
如果您担心使用preg_replace() 多次,然后在函数中设置一个常量。php文件:

define(\'WP_UPLOAD_DIR_URL\', wp_upload_dir_url() . \'/\');

SO网友:Nathan Johnson

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() 就像你一直做的那样。

如上所述here, 除非您有特定的性能问题,否则应该使用https://。

SO网友:Ronny K

我找到了答案。我用过wp_upload_dir(); wordpress codex

SO网友:surya_hs

这是我用来访问上传到wordpress文件夹“uploads/complete theme/”的名为“rock\\u 01.jpg”的图像文件的内容

<?php $upload_dir = wp_upload_dir(); ?>
<img src="<?php echo $upload_dir[\'baseurl\'] . \'/complete-theme/rock_01.jpg\'; ?>" />
它按预期工作。

结束

相关推荐

Re-process Images

我有a blog 它拥有嵌入帖子中的所有图像的最高分辨率版本,而不是链接到图像附件页的缩略图。您能告诉我如何重新处理所有嵌入的图像,以便将它们输出为缩小尺寸的缩略图,链接到自己的附件页(这是WordPress的默认设置)吗?我认为我可以让Regenerate Thumbnails 这个插件?