2016-03-23 12 views
1

私は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 Way」ではありません。このようにしないでください!代わりに、 'include'に[get_template_part](https://developer.wordpress.org/reference/functions/get_template_part/)を使用してください! –

2

includeまたはrequire_onceを使用して、テンプレートの内側には、WordPressの道ではありません。 (理由の詳細については、this articleを参照してください)WordPressは、理由のためにこれに対して特定の機能を公開しています - get_template_part

この機能を使用すると、テンプレートはテーマフォルダに配置する必要があります。 includeを使用すると、適切な場所からロードすることはできません($template変数に完全なパスがある場合を除き、インクルードはルートフォルダからロードされます(index.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 get_template_part($template); ?> 
     </section> 
<?php } ?> 
+0

私にこのことを教えてくれてありがとう、私は明らかに私のプロジェクトの根元から含めていたのでうまくいきましたが、なぜこれが望ましいのか分かります。 :) –

+0

Wierd、あなたの解決策を試しましたが、 'get_template_part'が私のために働いていません。 –

+0

「働いていない」とはどういう意味ですか?それはエラーを投げますか?テンプレートをロードしないでください。この時点で、 '$ template'の値とテンプレートファイルの名前と位置を知る必要があります。 –

関連する問題