2013-03-13 3 views
3

У меня есть простая проблема. Я надеюсь, что кто-то может пролить свет. У меня есть дочерняя тема с настраиваемым шаблоном страницы, и я просто пытаюсь проверить погоду или нет, этот шаблон используется. В нормальных условиях я бы просто использовал функцию is_page_template, но, похоже, она не работает с дочерними темами. Я пробовал следующийПроверка на наличие шаблонов в дочерней теме

if(is_page_template('template-custom-fullwidth.php')){ 
    //do something.. 
} 

, а также

if(is_page_template(dirname(get_bloginfo('stylesheet_url')).'/template-custom-fullwidth.php'){ 
    //do something.. 
} 

Neiter работает, и я надеюсь, есть более элегантное решение, чем использование $_SERVER для проверки URL-адресов. Я не могу себе представить, что для этого не существует функции, поскольку это кажется общей задачей. Я считаю, что проблема заключается в различиях между каталогами шаблонов и таблиц стилей. Можно ли использовать Wordpress для проверки шаблонов страниц, расположенных в дочерней теме?

Заранее благодарен!

+0

Где вы используете этот код? – MidhuN

+0

@MidhuN - Я действительно использую код внутри файла functions.php в моей дочерней теме, я стараюсь как можно больше не модифицировать родительскую тему, но я думаю, что это проблема. – dcd0181

+0

Вы не вызываете его из функции, вызванной внутри цикла, не так ли? И вы делаете это для обработки страниц (в смысле WP, то есть относительно статического контента), правильно? – ebohlman

ответ

0

Ссылка эту страницу WP Codex: http://codex.wordpress.org/Function_Reference/get_stylesheet_directory_uri

Используйте get_stylesheet_directory_uri вместо этого. Это должно работать:

is_page_template(get_stylesheet_directory_uri() . '/template-custom-fullwidth.php') 
{ 
    //do something.. 
} 
+1

Из моего тестирования это, похоже, не работает –

1

Если is_page_template используется внутри цикла попытайтесь поместить wp_reset_query() перед вызовом в is_page_template.

1

Я столкнулся с аналогичной проблемой. Несколько проб и ошибок заметили, что если условие сохраняется внутри функции, оно работает. но если держать его снаружи, это не так.

function team_page_enqueue_style() { 

    if (is_page_template('page-team.php')) { 
     wp_enqueue_style('easy-responsive-tabs-css', get_stylesheet_directory_uri() . '/css/easy-responsive-tabs.css', array(), NULL); 
    } 
} 

add_action('wp_enqueue_scripts', 'team_page_enqueue_style'); 
0

Попробуйте is_singular(); он работал в моем случае, как мой шаблон один шаблон сообщения страницы.

Для его использования вам необходимо указать имя шаблона без слова single- и .php. Например, если файл шаблона single-forest_of_trees.php, то это должно быть код:

if (is_singular('forest_of_trees')) { 
    // do something 
} 

также позволяет элегантный способ для нескольких значений.

0

Если бы тот же вопрос, и решить ее так:

get_stylesheet_directory_uri() не будет работать потому что он будет показывать URL и вам нужен сервер полный путь, используйте get_stylesheet_directory()

Если is_page_template() не работает, можно использовать get_page_template() и сравнить

if(get_page_template() == (get_stylesheet_directory() . '/custom-template.php')){ 
//your stuff 
} 
0

Что работает для меня (в functions.php):

if (get_page_template_slug() == 'template-custom-fullwidth.php'){ 

// anything 

} 
Смежные вопросы