2016-03-23 25 views
1

我正在使用作爲內容的新幻燈片/部分創建的每個頁面的單頁面wp站點。我想爲不同的幻燈片設計不同的模板,並且動態地包含每個模板都有問題,但是最終知道如何去做。

原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

使用includerequire_once模板裏面是不是WordPress的方式。 (更多關於爲什麼,請參閱this article)WordPress爲此暴露了特定功能 - 使用get_template_part

請注意,使用此功能,模板可以位於它們應該在的位置 - 位於主題文件夾中。使用include,你不會從正確的位置加載它們(包括將從根文件夾加載,其中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'中的值以及模板文件的名稱(和位置)以進一步提供幫助。 –