web-dev-qa-db-ja.com

プラグインで使用するuploadsフォルダ内の画像へのパスを取得する方法

/wp-content/uploadsに画像のあるフォルダがあります。私は/wp-content/pluginsにプラグインファイルもあります。 /wp-content/uploadsに格納されている画像を取得してプラグインファイルで使用したいです。

私が試してみました

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

これらの画像へのパスを取得する方法を他の人に教えてもらえますか。ありがとう。

5
Ronny

私が間違えていないのであれば、 wp_uploads_dir 関数を試してみるとよいでしょう。

$uploads = wp_upload_dir(); 

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

残念ながら文書化された bugwp_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()を複数回使用することによるパフォーマンスへの影響が心配な場合は、functions.phpファイルに定数を設定してください。

define('WP_UPLOAD_DIR_URL', wp_upload_dir_url() . '/');
3
Dan S

私は答えを見つけました。 wp_upload_dir();wordpress codex を使った

1
Ronny

これは私がワードプレスのフォルダ "uploads/complete-theme /"にアップロードされた "rock_01.jpg"という名前の画像ファイルにアクセスするために使用したものです。

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

期待通りに動作しました。

0
surya_hs

Dan Swp_upload_dir()がhttpsをサポートしていないtracチケットを指摘しています。私のサイトではそうではありませんが、それがあなたに影響を与えるのであれば、あなたは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://を使用する必要があります。

0
Nathan Johnson