当我创建一个页面、添加一个图库并在前端浏览此图库时,它将浏览与该页面关联的所有附件,而不仅仅是该图库中的图像。有没有办法过滤所有其他附件并只显示某个画廊中的图像?因此,例如,当我删除画廊并在同一页面上添加新画廊时 > 只显示新画廊?
有任何想法吗?
当我创建一个页面、添加一个图库并在前端浏览此图库时,它将浏览与该页面关联的所有附件,而不仅仅是该图库中的图像。有没有办法过滤所有其他附件并只显示某个画廊中的图像?因此,例如,当我删除画廊并在同一页面上添加新画廊时 > 只显示新画廊?
有任何想法吗?
这可能不是最优雅的方式,但我发现它非常有用。
将帖子 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);
}