WordPress:包含页面模板动态预览$ pages

时间:2016-03-23 13:00:54

标签: php wordpress templates dynamic include

我正在使用一个单页面的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*/
?>

2 个答案:

答案 0 :(得分:2)

在模板中使用includerequire_once不是 WordPress Way 。 (有关原因的更多信息,请参阅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 } ?>

答案 1 :(得分: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*/
?>