Вручную установить шаблон с помощью PHP в WordPress - PullRequest
1 голос
/ 15 марта 2012

Я разрабатываю новый шаблон для замены существующего.Шаблон называется featured.php, и я собираюсь заменить его на featured-new.php

Я хочу передать переменную "new" в строку запроса, тогда, если переменная new присутствуетон будет использовать файл featured-new.php.

Как я могу это сделать?Есть ли тег, указывающий странице использовать указанный шаблон?

Ответы [ 3 ]

1 голос
/ 16 марта 2012

Я предполагаю, что это шаблон страницы, верно?Это означает, что у него есть комментарий «Имя шаблона:» вверху, и он используется, когда появляется страница, а имя было выбрано в меню «Шаблон страницы» в редакторе.Если это так, то были на той же ... странице (каламбур был неизбежен.)

Если это так, вам нужно отфильтровать '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, и посмотреть, был ли он вообще установлен.Так вот что я сделал.Если вы имели в виду что-то другое, вам нужно соответствующим образом изменить эту логику.

0 голосов
/ 15 марта 2012

Я думаю, что самым простым способом сделать это было бы, если / если текущий шаблон включит новый шаблон или нет

в featured.php

if($_GET['show'] == 'new')
{
   include('featured-new.php');
}
else
{
   //this is the full featured.php code
}

Вы также можете найти дополнительную помощь в Иерархия шаблонов WordPress

0 голосов
/ 15 марта 2012

Я бы использовал theme switcher плагины, такие как этот один , а затем настраивал, отображать ли его только по URL или включать макет.

Также обратите внимание на это:1006 * Переключение тем

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...