
本文详解如何在 wordpress 主题中正确分离静态头部/底部与动态主体内容,通过标准模板文件结构和页面模板机制,确保切换页面时仅 body 部分更新,而 header 和 footer 保持一致。
本文详解如何在 wordpress 主题中正确分离静态头部/底部与动态主体内容,通过标准模板文件结构和页面模板机制,确保切换页面时仅 body 部分更新,而 header 和 footer 保持一致。
在 WordPress 主题开发中,“动态 body”并非指用 JavaScript 动态加载内容,而是指利用 WordPress 的模板层级(Template Hierarchy)机制,让不同页面自动调用对应的内容模板,从而实现主体区域随页面切换而变化,而 header.php 和 footer.php 始终复用。你已正确使用 get_header() 和 get_footer(),这正是实现“固定头尾、动态主体”的基础——接下来的关键是:将页面主体逻辑交还给 WordPress 内容循环(The Loop),而非手动硬编码 HTML 到主题文件中。
✅ 正确做法:遵循 WordPress 模板结构
你的 index.php(或 page.php、front-page.php 等)应包含标准内容循环,例如:
<!-- index.php 或 page.php -->
<?php get_header(); ?><main id="primary" class="site-main"><?php if (have_posts()) : ?><?php while (have_posts()) : the_post(); ?><article id="post-<?php the_ID(); ?>" post_class>>
<header class="entry-header"><h1 class="entry-title"><?php the_title(); ?></h1>
</header><div class="entry-content">
<?php the_content(); ?>
</div>
</article><?php endwhile; ?><?php else : ?><p><?php esc_html_e('Sorry, no posts found.'); ?></p>
<?php endif; ?></main><?php get_footer(); ?>
? 关键说明:
the_content()函数会自动输出你在 WordPress 后台「页面编辑器」中输入的富文本内容(含 HTML、图片、区块等)。这才是真正的“动态 body”——内容由管理员在后台维护,无需修改 PHP 文件。
✅ 自定义页面模板(可选进阶)
若某页面需独特布局(如首页轮播+服务列表),可创建专用模板文件,例如 template-homepage.php:
<?php /**
* Template Name: Homepage Layout
*/
get_header();
?><section class="hero-slider">/* 自定义轮播 HTML */</section><section class="services"><?php // 查询自定义文章类型或页面
$services = get_pages(['meta_key' => '_is_service', 'number' => 3]);
foreach ($services as $service) {
echo '<div class="service-item">';
echo '<h3>' . esc_html($service->post_title) . '</h3>';
echo '<p>' . wp_trim_words($service->post_content, 20) . '</p>';
echo '</div>';
}
?>
</section><?php get_footer(); ?>
然后在后台【页面 → 编辑某页 → 右侧「页面属性」→「模板」下拉框】中选择 “Homepage Layout”,该页面即启用此专属模板。
⚠️ 注意事项
- ❌ 不要将整页 HTML(如
<div class="contact-form">...</div>)直接写死在index.php中——这会导致所有页面显示相同内容,失去动态性; - ✅ 所有页面级差异应通过:
- 默认模板文件(
page.php,front-page.php,home.php)控制结构; -
the_content()输出后台编辑内容; -
get_template_part()复用模块化组件(如get_template_part('template-parts/content', 'hero'));
- 默认模板文件(
- ✅ 确保主题根目录下存在
index.php(必需)和header.php/footer.php(必需),否则get_header()将报错; - ✅ 使用
wp_head()和wp_footer()在header.php和footer.php中预留钩子,保障插件功能正常。
通过以上结构,当你在 WordPress 后台新建页面、编辑内容并发布后,访问对应 URL 时,WordPress 会自动匹配模板、执行循环、渲染 the_content() ——真正实现“header/footer 不变,body 随页面智能切换”的专业主题体验。











