BuddyPressのユーザーページに投稿機能とユーザー投稿一覧
記事表示のsingle.phpに投稿された画像を表示するにはちょっとしたコツが必要
一応BuddyPressのユーザーページに記事一覧まで出すのは前ページまでで終了なのですが、記事を表示するsingle.phpにてフォームから投稿された画像一覧を取得するにはちょっとしたコツが必要なんです。
get_children() 関数でフォームから投稿された画像一覧を取得
get_childrenについての詳しい説明はCodexを参照してください。(get_childrenとは)
ここからはBuddyPressで追加したページではなく、BuddyPressのテンプレートファイルであるsingle.phpを使います。
<!--get_childrenで記事IDを指定し、記事内での画像(post_mime_type=image)を取得--> <!--ID順で(orderby=ID)、降順にしてね(order=DESC)--> <?php $files = get_children("post_parent={$id}&post_type=attachment&post_mime_type=image&orderby=ID&order=DESC");?> <?php foreach($files as $key => $file):?> <div class="gallery-list"> <img src="<?php echo $thumb[0];?>" data-large="<?php echo $thumb[0];?>" width="<?php echo $thumb[1];?>" height="<?php echo $thumb[2];?>" /> <?php endforeach;?>
get_children()にて、投稿された記事中の画像(post_mime_type=image)をID降順(orderby=ID&order=DESC)で取得しないと、フォームから登録した画像順になってくれません。
なぜ画像を逆順に取得しないといけないの?
先日、この記事を書くにあたって一足早くフォーム(フロントエンド)から画像を投稿する方法を紹介しましたが、
「画像を登録したら記事のサムネイルにしたい」
だいたい1枚目に投稿した画像がサムネイルになるのが普通だろうと考えたからなのですね。で、仮に4枚画像が登録されたら、4枚目の画像がサムネイル登録されてしまいます(ループ処理のため、次のものがどんどん上書きされるため)。
そこで一番最初に登録した画像がサムネイルになるよう、配列を逆順に今回だとしてみましたので、最後に記事ページで投稿された画像を取得する際は降順にしないとだめでした、ということです。
使えれば何でもいいや!
というライトなWordPressユーザー及びBuddyPressユーザーさんは特に気にせずコピペで使っていただければと思います。