Wordpress、PHP初心者です。
画像の出力の際に、もっと簡素に指定する事が出来ないかと思い質問させて頂きます。
画像の出力する際、HTMLの中にechoでPHP(出力)を挿入する事が多いので、wp_get_attachment_image_srcを使用しております。ループ箇所にこのように設置しております。
<?php if (have_posts()) : ?> <?php while (have_posts()) : the_post(); /* サムネイルサイズ */ $img_s = 'thumbnail'; /* 420 */ $img_m = 'medium'; /* 640 */ $img_ml = 'medium_large'; /* 900 */ $img_l = 'large'; /* 1200 */ $img_f = 'full'; /* 1500 */ /* サムネイルサイズ */ $thumbnail_id = get_post_thumbnail_id(); $Simg = wp_get_attachment_image_src( $thumbnail_id , $img_s); $Mimg = wp_get_attachment_image_src( $thumbnail_id , $img_m); $MLimg = wp_get_attachment_image_src( $thumbnail_id , $img_ml); $Limg = wp_get_attachment_image_src( $thumbnail_id , $img_l); $Fimg = wp_get_attachment_image_src( $thumbnail_id , $img_f); ?> <picture> <source data-srcset="<?php echo $Simg[0]; ?>" media="--xs" /> <source data-srcset="<?php echo $Mimg[0]; ?>" media="--md" /> <source data-srcset="<?php echo $Limg[0]; ?>" media="--lg" /> <img data-src="<?php echo $Fimg[0]; ?>"/> </picture> <?php endwhile; ?> <?php endif; wp_reset_query(); ?>
こちらのソースで意図したサイズを出力できているのですが、他のテンプレートのループでも、上記の指定をしなくてはいけないので、こちらの部分を共通化したいと考えました。
試した事
呼び出しや共通化だとadd_actionが使えると思い以下のコードで試しました。
/* functions.php */ add_action( 'n_image_template', 'n_image_setup' ); function n_image_setup() { /* サムネイルサイズ */ $img_s = 'thumbnail'; /* 420 */ $img_m = 'medium'; /* 640 */ $img_ml = 'medium_large'; /* 900 */ $img_l = 'large'; /* 1200 */ $img_f = 'full'; /* 1500 */ /* サムネイルサイズ */ $thumbnail_id = get_post_thumbnail_id(); $Simg = wp_get_attachment_image_src( $thumbnail_id , $img_s); $Mimg = wp_get_attachment_image_src( $thumbnail_id , $img_m); $MLimg = wp_get_attachment_image_src( $thumbnail_id , $img_ml); $Limg = wp_get_attachment_image_src( $thumbnail_id , $img_l); $Fimg = wp_get_attachment_image_src( $thumbnail_id , $img_f); }
functions.phpに上記を入力。
テンプレートファイルに以下を入力。
<?php if (have_posts()) : ?> <?php while (have_posts()) : the_post(); do_action( 'n_image_template' ); ?> <picture> <source data-srcset="<?php echo $Simg[0]; ?>" media="--xs" /> <source data-srcset="<?php echo $Mimg[0]; ?>" media="--md" /> <source data-srcset="<?php echo $Limg[0]; ?>" media="--lg" /> <img data-src="<?php echo $Fimg[0]; ?>"/> </picture> <?php endwhile; ?> <?php endif; wp_reset_query(); ?>
もちろん動きませんでした。知識があるからしたら何やってんだ、という感じだと思います。
add_actionとdo_actionで何でも呼び出せるのかと思いましたが違いました。
・
・
・
上記のような画像サイズ指定を共通化したい場合、どのような方法がありますでしょうか?
尚、HTMLベースにPHPを埋め込む方法は変えられないので(PHPでHTMLをechoする方法NG)、上記のような方法で何かあればご教授お願いできればと思います。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/08/15 02:58
2018/08/15 06:05
2018/08/15 07:39