web-dev-qa-db-ja.com

カスタマイザにアップロードされた画像のカスタム画像サイズを取得する方法

カスタマイザを使用して画像をアップロードしています。以下のコードはフルサイズの画像でも問題ありませんが、その下に作成した画像のカスタムサイズを代わりに表示したいと思います。

これは私のテンプレートファイルのコードです:

<img src="<?php echo get_theme_mod( 'image-1' , get_template_directory_uri().'/images/default.jpg' ); ?>">

これは私のfunctions.phpファイルにあるカスタムサイズを追加するコードです。

add_image_size( 'image-thumbnail', 525, 350, true ); 
1
Troy Templeman

どうやら、あなたのmodは文字列として画像への完全なパスを保存しています。これはほとんど選択肢がありませんが、文字列を検索して置き換えることです。

$img = get_theme_mod('image-1');
if (!empty ($img)) {
  $img = preg_replace ('.(jpg|jpeg|png|gif)$','-525x350$0');
  if (!file_exists($img)) $img = get_template_directory_uri().'/images/default.jpg';
    }
  else if (!file_exists($img)) $img = get_template_directory_uri().'/images/default.jpg';

言葉で。 modを入手してください。存在する場合は、文字列の末尾で$imgが出現することをjpg|jpeg|png|gifで検索してから、それに画像サイズを先頭に追加します(例:...image-525x350.jpg)。そのファイルが存在しない場合は、デフォルトを使用してください。 modがない場合は、デフォルトも使用してください。

4
cjbj

Cjbjの答えから作業して、preg_replaceを正しく動作させるために区切り文字を追加する必要があるかもしれません。

$img = get_theme_mod('image-1');
if (!empty ($img)) {
  $img = preg_replace ('/.(jpg|jpeg|png|gif)$/','-525x350$0');
  if (!file_exists($img)) $img = get_template_directory_uri().'/images/default.jpg';
  }
else if (!file_exists($img)) $img = get_template_directory_uri().'/images/default.jpg';
0
Coll