2016-03-23 4 views
1

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

оригинальный PHP:

<?php 
    $pages = get_pages(array('sort_column' => 'menu_order')); 
    foreach ($pages as $page_data) { 
     $page_ID = $page_data->ID; 
     $template = get_current_template(); 

?> 
<section id="<?php echo $slug ?>" class="slide cf">      
     <?php include($template) ?> 

</section> 
<?php 
    } /*end foreach*/ 
?> 

ответ

0

Новый PHP:

<?php 
    $pages = get_pages(array('sort_column' => 'menu_order')); 
    foreach ($pages as $page_data) { 
     $page_ID = $page_data->ID; 
     $template = get_page_template_slug($page_ID); 

?> 
<section id="<?php echo $slug ?>" class="slide cf">      
     <?php include($template) ?> 

</section> 
<?php 
    } /*end foreach*/ 
?> 
+2

Нет, это не «Путь WordPress». Не делай этого так! Используйте [get_template_part] (https://developer.wordpress.org/reference/functions/get_template_part/) вместо 'include'! –

2

Использование include или require_once внутри шаблона не WordPress Way. (Подробнее о том, почему, см. this article) WordPress раскрыл определенные функции для этого по какой-либо причине - используйте get_template_part

Обратите внимание, что с помощью этой функции шаблоны могут быть расположены там, где они должны быть - в папке темы. С включением вы не собираетесь загружать их из соответствующего места (включить будет загружаться из корневой папки, где находится index.php, если переменная $template не имеет полного пути, который будет запутанным и будет трудно поддерживать).

<?php 
    $pages = get_pages(array('sort_column' => 'menu_order')); 
    foreach ($pages as $page_data) { 
     $page_ID = $page_data->ID; 
     $template = get_page_template_slug($page_ID); 
?> 
     <section id="<?php echo $slug; ?>" class="slide cf">      
      <?php get_template_part($template); ?> 
     </section> 
<?php } ?> 
+0

Спасибо, что проинструктировали меня об этом, я, очевидно, был включен в корень моего проекта, так что он работал хорошо, но я понимаю, почему это предпочтительнее. :) –

+0

Wierd, попробовал ваше разрешение, но 'get_template_part' не работает для меня. –

+0

Что значит «не работает». Вызывает ли ошибка? Или просто не загружайте шаблон? На этом этапе мне нужно будет узнать значение в '$ template', а также имя (и местоположение) вашего файла шаблона, чтобы помочь дальше. –

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