对于加载两个不同模板的同一页面,我如何才能有两个不同的URL?

时间:2018-01-12 作者:davemackey

我有以下页面:

http://liquidchurch.com/messages/

它在桌面和移动网络上显示良好。

我正在开发一个移动应用程序,并使用web视图将页面封装在应用程序中。问题是,我不希望在移动应用程序中查看页面时页眉/页脚是页面的一部分,但我确实希望在应用程序外使用桌面或移动浏览器时页眉/页脚是可见的。

关于如何实现这一点,或者我是否完全错了,有什么想法吗?谢谢

1 个回复
最合适的回答,由SO网友:Milo 整理而成

您可以通过重写端点和模板过滤器来实现这一点。

首先,为page 岗位类型:

function wpd_app_view_rewrite_endpoint() {
    add_rewrite_endpoint( \'app-view\', EP_PAGES );
}
add_action( \'init\', \'wpd_app_view_rewrite_endpoint\' );
别忘了flush rewrite rules 添加后(或只需访问Permalinks>Settings页面即可完成此操作,无需代码)。

现在您可以添加app-view/ 例如,在任何页面永久链接URL的末尾,您的页面将domain.com/messages/app-view/.

下一步是检测app-view/ ,并在这种情况下加载其他模板。对于页面帖子类型,我们使用page_template 过滤器:

function wpd_app_view_page_template( $template ) {
    global $wp_query;
    if( isset( $wp_query->query_vars[\'app-view\'] )  ) {
        $template = locate_template( array( \'app-view-template.php\' ) );
    }
    return $template;
}
add_filter( \'page_template\', \'wpd_app_view_page_template\' );
检查是否query_vars[\'app-view\'] 在全局$wp_query 对象,并加载app-view-template.php 本例中的模板。只有当app-view 重写规则与当前请求匹配。

结束

相关推荐

更新页面(update-core.php)和插件页面(plugins.php)恢复到主页

我在Wordpress网站的管理视图中收到通知,我有一个网站和插件的可用更新(在我的网络管理仪表板中,在“插件”和“更新”旁边的红色圆圈中有“1”)。。。但当我尝试同时转到“更新”页和;插件页面,是否显示主页?此时的URL为http:///wp-admin/network/update-core.php/和http:///wp-admin/plugins.php/分别地因此,我永远无法到达真正的更新页面,也无法更新我的Wordpress或插件。如何显示更新或插件页面?