如果你在使用 Elementor 编辑某个页面时看到一条报错:“You must call the content function”,那很可能是当前主题模板缺少了 WordPress 的核心循环函数,也就是 the_content()。
这篇文章就带你搞懂这句报错的真实含义,以及 WordPress 模板中的 Loop 到底是怎么工作的。
报错提示背后的含义
先来翻译一下那条报错:
“You must call the content function”
意思是 Elementor 想要输出当前页面的正文,但找不到 WordPress 提供的内容接口。
换句话说,Elementor 加载不出来页面内容,是因为主题模板缺了关键代码片段。
什么是 WordPress Template Loop?
WordPress 的 Loop(循环)是一个用来显示文章内容的机制。它的基本作用是:
抓取当前页面或文章的数据
依次输出标题、内容、作者等信息
最基础的 Loop 看起来像这样:
<?php
if ( have_posts() ) :
while ( have_posts() ) : the_post();
the_content();
endwhile;
endif;
?>
其中的 the_content() 是重点,这一行负责输出正文内容。如果这行代码没有写进模板文件,Elementor 就找不到插入位置,于是直接报错。
哪些模板文件跟这个错误有关?
报错大多出现在以下模板中:
page.php(页面模板)
single.php(单篇文章模板)
自定义的 template-xxx.php 文件
如果你使用的是自己开发的主题或经过修改的模板,一定要检查这些文件中是否包含了 the_content()。
如何修复?
举个例子,如果你的 page.php 看起来像这样:
<?php
get_header();
// 自定义结构…
get_footer();
那很可能就会出问题。正确的结构应该加入 Loop:
<?php
get_header();
if ( have_posts() ) :
while ( have_posts() ) : the_post();
the_content();
endwhile;
endif;
get_footer();
只要加上这段,Elementor 就可以正常加载内容编辑器了。
自定义模板文件也需要加入 Loop
如果你自己写了一个 template-about.php 之类的页面模板,那同样需要:
<?php
/*
Template Name: About Page
*/
get_header();
if ( have_posts() ) :
while ( have_posts() ) : the_post();
the_content();
endwhile;
endif;
get_footer();
这可以确保 WordPress 和 Elementor 都能读取并插入页面内容。
用 Elementor 创建模板要注意什么?
如果你使用的是 Elementor Pro 并通过“Theme Builder”创建页面模板,虽然页面结构不依赖传统的 page.php,但也要选择正确的显示条件。
比如:
创建“单页面模板”,显示条件设为 “所有页面”
页面本身选择 Elementor Canvas 或 Full Width 模板
如果模板选错,或者底层主题不支持 the_content(),一样会报错。
总结
Elementor 报错 “You must call the content function” 是个模板结构问题,本质上是主题模板没有包含 WordPress 的内容循环代码。修复的关键就是确认 the_content() 被正确定义在页面或文章的模板文件中。只要加上 Loop,Elementor 就能顺利加载出你要编辑的内容。