在WordPress中使用PHP手动设置模板

时间:2012-03-15 16:16:42

标签: php wordpress templates themes

我正在设计一个新模板来替换现有模板。该模板名为featured.php,我将用featured-new.php

替换它

我想在查询字符串中传递变量“new”,然后如果存在new变量,则使用feature-new.php文件。

我该怎么做?是否有标签告诉页面使用指定的模板?

3 个答案:

答案 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
}

您还可以在WordPress Template Hierarchy

中找到更多帮助