Я ответил на похожий вопрос минуту назад.
Вручную установить шаблон с использованием PHP в WordPress
Ответ выше должен работать, но использование TEMPLATEPATH, я думаю, не является идеальным, оно также, кажется, не пользуетсяиз того, что WordPress уже делает для выбора шаблона.
function filter_page_template($template){
/* Lets see if 'template is set' */
if( isset($_GET['template']) ) {
/* If so, lets try to find the custom template passed as in the query string. */
$custom_template = locate_template( $_GET['template'] . '.php');
/* If the custom template was not found, keep the original template. */
$template = ( !empty($custom_template) ) ? $custom_template : $template;
}
return $template;
}
add_filter('page_template', 'filter_page_template');
Делая это таким образом, вам не нужно добавлять новую строку для каждого шаблона, который вы хотите иметь возможность указать.Кроме того, вы используете преимущества существующей иерархии шаблонов и учитываете возможность ввода несуществующего шаблона.
Я хотел бы отметить, что вам следует провести некоторую проверку по значению $ _GET ['template'] перед его использованием, но также вы можете захотеть сохранить текущий список для проверки, чтобы они не могли простоиспользуйте любой старый шаблон.