我认为一个很好的可能性是为库的permalink添加一个端点,然后检查模板以包含在template_include
过滤器:
add_action(\'init\', function() {
add_rewrite_endpoint( \'gallery\', EP_PERMALINK );
});
add_filter( \'template_include\', function($template) {
if ( get_query_var( \'gallery\' ) ) {
return get_stylesheet_directory() . \'/single-event-gallery.php\';
}
return $template;
});
现在,创建文件
single-event-gallery.php
并将其放在您的主题文件夹中。您可以复制
single-event.php
替换
the_content()
使用:
if ( get_post_gallery() ) {
echo get_post_gallery();
} else {
echo "No gallery found";
}
您必须使用URL,如
mysite.com/event/a-event-post/gallery/1
(“1”是随机值,“gallery/1”之后的任何值都有效)。
我认为这是一个简单、快速、简单的解决方案,但有以下问题:
它将端点重写规则添加到所有永久链接中,之后需要一些值gallery
在URL中,为了避免这些问题,我们可以仅为“event”post类型定义自定义重写规则,并定义要在中使用的自定义查询变量template_include
fiter公司。
add_action( \'init\', \'cyb_event_gallery_rewrite_rule\' );
function cyb_event_gallery_rewrite_rule() {
add_rewrite_rule( \'^event/([^/]+)/gallery/?$\', \'index.php?event=$matches[1]&gallery=yes\', \'top\' );
}
add_filter( \'query_vars\', \'cyb_register_gallery_query_var\' );
function cyb_register_gallery_query_var( $vars ) {
$vars[] = \'gallery\';
return $vars;
}
add_filter( \'template_include\', function($template) {
if ( get_query_var( \'gallery\' ) ) {
return get_stylesheet_directory() . \'/single-event-gallery.php\';
}
return $template;
});
现在您可以使用URL,如
mysite.com/event/a-event-post/gallery/
. 您可以在父帖子的循环内生成URL,方法如下(或类似方法,取决于您的永久链接设置):
$gallery_url = get_permalink() . \'gallery/\';
注意:应用此代码后,需要刷新站点的重写规则。您可以访问permalinks设置页面并单击“保存”。