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 回答