这是可能的,但需要一些发展努力。首先,重要的是要知道,WordPress default»galleries«不是可以使用单独URL寻址的离散资源。它们只是在单个POST上下文中定义的短代码。
因此,您需要做的是定义一个URL,缩略图指向该URL,当然,它与posts缩略图不同。一种(并非唯一)方法是,向永久链接添加重写端点。假设你的post permalink是your-domain.tld/2014/a-wordpress-post/
缩略图可能显示的URLyour-domain.tld/2014/a-wordpress-post/thumb/123/
. 最后一部分上的数字表示每个缩略图的ID。端点通常添加在init
:
add_action( \'init\', \'wpse_131753_add_thumb_endpoint\' );
function wpse_131753_add_thumb_endpoint() {
add_rewrite_endpoint( \'thumb\', EP_PERMALINK | EP_PAGES );
}
现在,您需要更改WordPress呈现库短代码的方式。有一个过滤器
post_gallery
. 它绕过了名为
gallery_shortcode()
定义于
wp-includes/media.php
.
让我们查看一些代码:
add_filter( \'post_gallery\', \'wpse_131753_gallery_view\', 10, 2 );
function wpse_131753_gallery_view( $output, $shortcode_attributes ) {
$default_attributes = array(
\'show-thumbnails\' => \'\',
\'order\' => \'ASC\',
\'orderby\' => \'menu_order ID\',
\'id\' => $post ? $post->ID : 0,
\'itemtag\' => \'dl\',
\'icontag\' => \'dt\',
\'captiontag\' => \'dd\',
\'columns\' => 3,
\'size\' => \'thumbnail\',
\'include\' => \'\',
\'exclude\' => \'\',
\'link\' => \'\'
);
$atts = shortcode_atts( $default_attributes, $shortcode_attributes, \'gallery\' );
$current_thumb_ID = get_query_var( \'thumb\' );
// build your gallery markup here using
// $atts[ \'show-thumbnails\' ] and
// $current_thumb_ID
// to defer between varous outputs
if ( $current_thumb_ID ) {
// here you may want to show the compltete gallery
} else {
// and here you may want to show the thumbs in
// $atts[ \'show-thumbnails\' ]
// to link to the detailed view use this:
$permalink = untrailingslashit( get_permalink( get_the_ID() ) );
$thumb_link = $permalink . \'/thumb/\' . $thumb_ID;
// where $thumb_ID is one of the IDs in your atts.
}
return $output;
}
该函数应该查找默认使用的gallery快捷码属性,并根据您的想法构建html,在没有给定端点或单击了特定缩略图(端点包含单击缩略图的ID)时,它是否应该只显示三个缩略图。enpoint的值存储在查询变量中:
get_query_var( \'thumb\' )
.