我正在使用一个单页面的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 :(得分:2)
在模板中使用include
或require_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*/
?>