0

ページを作成し、ギャラリーを追加し、フロントエンドでこのギャラリーを参照すると、そのギャラリー内の画像だけでなく、そのページに関連付けられているすべての添付ファイルが参照されます。他のすべての添付ファイルをフィルタリングして、特定のギャラリー内の画像のみを表示する方法はありますか? たとえば、ギャラリーを削除して同じページに新しいギャラリーを追加すると、新しいギャラリーのみが表示されますか?

何か案は?

4

1 に答える 1

0

これは最もエレガントな方法ではないかもしれませんが、非常に便利です。

以下の関数に投稿 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);
}
于 2013-02-08T09:11:23.467 に答える