如何使用默认页面布局框架创建自定义页面模板?

时间:2015-05-25 作者:Foo Bar

我正在写一个自定义主题。大部分内容将使用常规index.php, header.phpfooter.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"> 我必须在每个模板中都这样做。我想避免这种情况。

1 个回复
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\' ); ?>

结束

相关推荐

Help with if/else loop

你能帮我在这个循环中添加一个else语句吗?<?php $post_type = \'post\'; // <-- Post Type $tax = \'temporada\'; // <-- Taxonomía $termino = get_terms($tax); $category = get_the_category(); $cat_name = $category[0]->cat_ID; if ($termino) {