我正在写一个自定义主题。大部分内容将使用常规index.php
, header.php
和footer.php
.
索引。php看起来像
<?php get_header(); get_sidebar(); ?>
<div id="content">
<?php
while ( have_posts() ) {
the_post();
the_content();
} // end while
?>
</div>
<?php get_footer(); ?>
但是会有一些页面包含特殊内容,所以我需要编写定制模板php文件,并将其分配给一些页面。现在,为了将这些特殊内容嵌入到网站的主框架中,我必须
<?php get_header(); get_sidebar(); ?>
<div id="content">
<?php
// [special template php code]
?>
</div>
<?php get_footer(); ?>
在每个自定义模板中。正如您所看到的,这是完全相同的,只是主循环被自定义内容替换了。我希望尽可能避免代码重复。所以,在我的模板中,我只需要
[special template php code]
而不是整个框架。
是否有方便的方法使用中定义的默认框架index.php
(页眉、页脚、侧边栏等),而不必反复调用每个模板中的函数?我想到了一些phpswitch
在里面index.php
, 但这也必须维护(例如,如果页面id更改,如果我使用页面id作为开关变量)。或者如果我打算在<div id="content">
我必须在每个模板中都这样做。我想避免这种情况。
SO网友:rafawhs
我认为你做得对。。。但方向不对。如果将默认结构分开,如:
内容标题。php
<?php get_header(); get_sidebar(); ?>
<div id="content">
内容页脚。php
</div>
<?php get_footer(); ?>
然后你可以使用
get_template_part 要将所有内容放在一起:
指数php
<?php get_template_part( \'content\', \'header\' ); ?>
<?php
while ( have_posts() ) {
the_post();
the_content();
} // end while
?>
<?php get_template_part( \'content\', \'footer\' ); ?>
页面模板。php
<?php get_template_part( \'content\', \'header\' ); ?>
// [special template php code]
<?php get_template_part( \'content\', \'footer\' ); ?>