ページを作成し、ギャラリーを追加し、フロントエンドでこのギャラリーを参照すると、そのギャラリー内の画像だけでなく、そのページに関連付けられているすべての添付ファイルが参照されます。他のすべての添付ファイルをフィルタリングして、特定のギャラリー内の画像のみを表示する方法はありますか? たとえば、ギャラリーを削除して同じページに新しいギャラリーを追加すると、新しいギャラリーのみが表示されますか?
何か案は?
ページを作成し、ギャラリーを追加し、フロントエンドでこのギャラリーを参照すると、そのギャラリー内の画像だけでなく、そのページに関連付けられているすべての添付ファイルが参照されます。他のすべての添付ファイルをフィルタリングして、特定のギャラリー内の画像のみを表示する方法はありますか? たとえば、ギャラリーを削除して同じページに新しいギャラリーを追加すると、新しいギャラリーのみが表示されますか?
何か案は?
これは最もエレガントな方法ではないかもしれませんが、非常に便利です。
以下の関数に投稿 ID を渡すと、その投稿の post_content からギャラリーが読み込まれます。したがって、ギャラリーを作成して投稿コンテンツに挿入し、テンプレートでこの関数を実行すると、そのギャラリー内の添付ファイルの配列が返され、スライドショーなどに自由に使用できます。
function wp_load_gallery($post_id) {
$post = get_post( $post_id );
$regx = '/' . get_shortcode_regex() . '/';
preg_match( $regx, $post->post_content, $matches );
$ids = shortcode_parse_atts( $matches[3] );
$gallery = array( );
foreach( explode( ',', $ids['ids'] ) as $id ) {
if($id) {
$gallery[] = get_post( $id );
}
}
return $gallery;
}
ショートコードはコンテンツから切り取られていないことに注意してください。そのため、コンテンツを表示するときは、strip_shortcodes 関数を介して実行する必要があります。
echo strip_shortcodes( get_the_content() );
これにより、好きなときにいつでもギャラリーを更新できます。
編集:
すべての画像を単純に表示するには:
$gallery = wp_load_gallery($YOUR_POST_ID);
foreach($gallery as $image) {
echo wp_get_attachment_image($image->ID);
}