画像ギャラリーのアップロードを使用してカスタム投稿タイプを作成しました。今私はフロントエンドにギャラリーを表示しようとしています。これは私がこれまでに持っているもので、1つの画像を表示するために機能しますが、複数の画像がアップロードされている場合、すべてのURLがsrc
タグで行き詰まります。それで、私はその配列をループして、それぞれを別々に吐き出すべきだと思いますか?それが進むべき道でしょうか、そしてもしそうなら、どうすればこれを達成できますか?
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
<?php
echo '<img src="'.get_post_meta($post->ID, 'gallery-upload', true).'">';
?>
<?php endwhile; else: ?>
<p><?php _e('No posts were found. Sorry!'); ?></p>
<?php endif; ?>
編集:
これは私がその作品になったものです...
<?php
foreach(get_post_meta($post->ID, 'gallery-upload') as $meta) {
foreach(explode(',', $meta) as $src) {
echo '<img src="'.htmlentities($src).'">';
}
}
?>
画像を保存する方法を再編成する必要があります。アップロードしたファイルをその特定の投稿の子にします。投稿メタフィールドに入れないでください。それから get_children()
ですべての画像を取得します。いくつかの例については、[gallery]
ショートコードの組み込みハンドラを見てください。
私はこのように行かなければなりません:
$args = array(
'post_mime_type' => 'image',
'numberposts' => -1,
'post_parent' => get_the_ID(),
'post_type' => 'attachment'
);
$attached_images = get_children( $args );
foreach ( $attached_images as $image )
{
// print image
}
また、投稿メタフィールドを使い続けたい場合でも、URLを保存しないでください。代わりに添付ファイルIDを使用してください。 URLはいつでも変更できます(開発サイトから本番サイトへの移行を検討してください)。
それで、私はその配列をループして、それぞれを別々に吐き出すべきだと思いますか?それが進むべき道でしょうか、そしてもしそうなら、どうすればこれを達成できますか?
はい。 get_post_meta(...)
は、最後のパラメータなしで、あるいはfalseに設定して、配列を返すべきです。あなたはその後持っているでしょう...
<?php
$meta = get_post_meta($post->ID, 'gallery-upload');
foreach ($meta as $m) {
echo '<img src="'.$m.'">';
}
?>