Ajax Load Moreメディア内の画像を一覧表示

最近WordPressのページネーションは、Ajax Load Moreという無限スクロールのプラグインをよく利用している。
このプラグインは、ショートコードを利用してpost_typeやtaxonomyを指定しアーカイヴなどで一覧を表示してくれます。
大変動きも良く、細かな指定もできるので大変助かっています。

今回はそのAjax Load Moreも利用してメディア内にある画像を一覧表示する方法です。
また、画像にカスタムフィールドで任意の値を持たせ、その値を持った画像を一覧表示する方法も書いておきます。

まずは、エディッター内の使用ではなくarchive.phpなどのテーマで実行したい場合の書き方です。
do_shortcodeを利用します。

 

画像を表示する場合は、post_statusに注意

このコードを表示したいテーマの部分に記入します。
ここで注意するのは、post_status=”inherit” に指定すると言うことです。この指定をしないと画像が表示されません。

そして表示するテンプレート側の記述です。

参考:https://connekthq.com/plugins/ajax-load-more/examples/attachments/

カスタムフィールドを利用して特定の値を持った画像を一覧表示

次にカスタムフィールドで特定の値を持った画像のみを表示させる方法です。

画像へは、Advanced Custom Fieldsなどを利用して、画像(attachment)に対してカスタムフィールドの値を持たせます。
例えばAdvanced Custom Fieldsのチェックボックスを利用してフィールド名「location」に「海、山、空」を設定し、その値を画像に持たせた場合。山(mountain)の値を持った画像を一覧表するには下記のようにします。

ここでは、ショートコードが長くなって分かりにくくなるのと、他でも使い回せるようにカスタムフィールドの部分などは変数にしています。
注意するのは、meta_compare=”LIKE”にするということです。これで山(mountain)画像が一覧表示されます。

Ajax Load Moreで他にも試したこと

  • 他にも、表示した画像の使われている投稿の親IDを取得して画像からその投稿へのリンクを作成
  • 取得した画像のURLから画像のIDを取得して画像に持たせたcaptionテキストを表示(簡単なようでハマってしまった)

以上、Ajax Load Moreを使った画像の一覧表示についてです。