• 初心者です。
    どなたかご教授ください。

    トップページで、全記事内の全ての画像を取得し、それぞれ別の<article>内で使用したいと思っています。

    Simple Image Grabberで
    function images($num = 'all')
    として記事内の全ての画像を取得し、

    loop.phpに下記のように記述すると、全ての画像が表示されはするのですが、一記事内に複数の画像がある場合には、当然ですが、全て同一の<article>内におさまってしまいます。
    実際には、画像を1つずつ<article>内に入れたいと思うのですが、なかなか同じような事例が見つけられず、また理解が足りず、方法がわかりません。

    <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
    <article><?php images(); ?></article>
    <?php
    endwhile;
    endif;
    ?>

    また、メディアライブラリの全画像を取得する方法も見かけましたが、あくまで投稿した記事内の画像を表示したいと思っています。

    どなたかご教授のほど、どうかよろしくお願いいたします。

1件の返信を表示中 - 1 - 1件目 (全1件中)
  • こんばんわー。
    WordPress には色んなプラグインがありますねー (*’-‘*)。面白そうだったのでプラグインをインストールして調べてみました。関数1個だけの男前なプラグインですね。フックなどもなかったので、自力で、ちょっぴり力技で、なんとかするしか無さそうですね。

    元の images 関数の第5引数で echo せず値を取れるようです。これを利用してラッパー関数を用意してみました。functions.php などに次のコードを書いてください。

    function get_images_as_array($num=1, $width=null, $height=null, $class='alignleft', $permalink=true) {
    	$images = images($num, $width, $height, $class, $permalink, false);
    	if ($permalink) {
    		return preg_split('#(?<=</a>)(?!$)#', $images);
    	} else {
    		return preg_split('#(?<=/>)(?!$)#', $images);
    	}
    }

    この関数は、images 関数で得られる画像のリストを配列として取得する関数です。
    第5引数が無い以外は、images 関数と同じ引数リストを取ります。
    プラグインの images 関数から得られた HTML の文字列を、正規表現で分割しています。あまり凝った正規表現ではありませんが、今の要件は満たせると思います。

    配列が返るので、そのままではお望みの動作ではありませんが、テンプレートの中では、次のようにして利用できると思います。

    <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
    <article><?php echo implode("</article>\n<article>", get_images_as_array($num='all')); ?></article>
    <?php
    endwhile;
    endif;
    ?>

    上手くいったら幸いです!

1件の返信を表示中 - 1 - 1件目 (全1件中)
  • トピック「全記事内の画像を全て取得し、個別に呼び出したい」には新たに返信することはできません。