我正在设计一个新模板来替换现有模板。该模板名为featured.php,我将用featured-new.php
替换它我想在查询字符串中传递变量“new”,然后如果存在new
变量,则使用feature-new.php文件。
我该怎么做?是否有标签告诉页面使用指定的模板?
答案 0 :(得分:1)
我假设这是一个页面模板,是吗?这意味着它在顶部有一个注释“模板名称:”,它在页面出现时使用,并且名称是从编辑器中的“页面模板”菜单中选择的。如果是这样,那么就是在同一页面上(双关语是不可避免的。)
如果是这种情况,则需要过滤'page_template'。
function filter_page_template($template){
/**
* Lets see if the current template is featured.php,
* and if 'new' is set in the query string
*/
if(isset($_GET['new']) && $template == locate_template('featured.php')) {
/**
* If so, we'll set the custom template name...
* You can skip this temporary variable and just pass this
* directly to 'locate_template()'.
*/
$new_template = 'featured-new.php';
/*... and now we use locate_template to find the actual path and return that. */
return locate_template($new_template);
} else {
/**
* Otherwise, if 'new' is not set
* or the current template is not 'featured.php',
* We should just return the original $template value undisturbed.
*/
return $template;
}
}
add_filter('page_template', 'filter_page_template');
我不明白你想如何使用'new',听起来像想要一个名为new的查询字符串参数,看看它是否只是设置了。这就是我所做的。如果你的意思不同,你需要相应地改变那些逻辑。
答案 1 :(得分:0)
我会使用此one之类的theme switcher
插件,然后自定义是仅从网址提供还是在布局上切换。
另外,请看一下:Theme Switching
答案 2 :(得分:0)
我认为最简单的方法就是if / else当前模板是否包括新的模板
in featured.php
if($_GET['show'] == 'new')
{
include('featured-new.php');
}
else
{
//this is the full featured.php code
}
中找到更多帮助