移动电话可能不是一个很好的例子--responsive design 会处理好的。
如果这是我的项目,我会采取稍微不同的方法。我不会在URL前面加前缀,而是在手机的一端加上一个重写端点。端点与使用template_include
过滤器可以工作。
所以你最终得到了这样的永久链接结构
/{post_type}/{post_slug}
/{post_type}/{post_slug}/mobile
有很多答案
explain this 在别处对于
mobile
端点。
<?php
add_action(\'init\', \'wpse74553_add_endpoints\');
function wpse74553_add_endpoints()
{
// EP_ALL adds the endpoint to everything.
add_rewrite_endpoint(\'mobile\', EP_ALL);
}
// this makes the naked `mobile` endpoint work vs. having to
// use something `mobile/works`.
add_filter(\'request\', \'wpse74553_filter_request\');
function wpse74553_filter_request( $vars )
{
if(isset($vars[\'mobile\']))
$vars[\'mobile\'] = true;
return $vars;
}
从那里你可以
template_include
如果
mobile
已设置查询变量。
<?php
add_filter(\'template_include\', \'wpse74553_include\');
function wpse74553_include($t)
{
if(get_query_var(\'mobile\'))
{
// you have a request with the mobile endpoint
$t = \'mobile-template.php\';
}
return $t;
}
唯一需要注意的是
template_include
根据每个请求激发。它并不具体,所以如果您想使用它,可能需要进行比上面更多的检查。还有一些更具体的过滤器;进去看看
wp-includes/template.php
获得一个想法,特别是功能
get_query_template
.
对于单篇文章,您可以使用single_template
例如,过滤器。
简而言之,您完全不受模板层次结构的限制,您可以使用template_include
或任何{{type}}_template
过滤器。