/wp-content/uploads
に画像のあるフォルダがあります。私は/wp-content/plugins
にプラグインファイルもあります。 /wp-content/uploads
に格納されている画像を取得してプラグインファイルで使用したいです。
私が試してみました
echo'<img src="../../USER_PHOTOS/ronny'" href="#"></img>';
これらの画像へのパスを取得する方法を他の人に教えてもらえますか。ありがとう。
私が間違えていないのであれば、 wp_uploads_dir 関数を試してみるとよいでしょう。
$uploads = wp_upload_dir();
echo '<img src="' . esc_url( $uploads['baseurl'] . '/USER_PHOTOS/ronny/' ) . '" href="#">';
残念ながら文書化された 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()
を複数回使用することによるパフォーマンスへの影響が心配な場合は、functions.phpファイルに定数を設定してください。
define('WP_UPLOAD_DIR_URL', wp_upload_dir_url() . '/');
私は答えを見つけました。 wp_upload_dir();
wordpress codex を使った
これは私がワードプレスのフォルダ "uploads/complete-theme /"にアップロードされた "rock_01.jpg"という名前の画像ファイルにアクセスするために使用したものです。
<?php $upload_dir = wp_upload_dir(); ?>
<img src="<?php echo $upload_dir['baseurl'] . '/complete-theme/rock_01.jpg'; ?>" />
期待通りに動作しました。
Dan S はwp_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://を使用する必要があります。