当我创建页面,添加图库,并在前端浏览此图库时,它将浏览与该页面关联的所有附件,而不仅仅是该图库中的图像。有没有办法过滤所有其他附件,只显示某个图库中的图像?因此,例如,当我删除图库并在同一页面上添加新图库时>只显示新画廊?
有什么想法吗?
答案 0 :(得分:0)
这可能不是最优雅的方式,但我发现它非常有用。
将帖子ID传递给下面的函数会从该帖子的post_content加载图库。因此,您将创建一个库并将其插入到您的帖子内容中,然后在模板中运行此功能,并将返回该库中的一系列附件,您可以随意使用,即幻灯片等。< / p>
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);
}