在PHP Include中使用时不显示的自定义字段

在PHP Include中使用时不显示的自定义字段,php,wordpress,advanced-custom-fields,Php,Wordpress,Advanced Custom Fields,请容忍我,因为我是新手。 所以我有一个自定义字段,我使用Wordpress中的高级自定义字段创建了它 我的模板代码名为template test.php,包含以下内容 <div class="item-one"><?php the_content(); ?><span>text1</span></div> <div class="item-two"><?php echo get_field('sponsor_adver

请容忍我,因为我是新手。 所以我有一个自定义字段,我使用Wordpress中的高级自定义字段创建了它

我的模板代码名为
template test.php
,包含以下内容

<div class="item-one"><?php the_content(); ?><span>text1</span></div>
<div class="item-two"><?php echo get_field('sponsor_advertisement_one'); ?><span>text2</span></div>
<div class="item-three"><?php echo get_field('sponsor_advertisement_two'); ?><span>text3</span></div>
text1
文本2
文本3
现在,当我使用Wordpress admin来预览页面
template test.php
时,单击update按钮并单击preview。我可以看到我的帖子(赞助商广告一号和赞助商广告二号的内容)

但是,当我尝试使用以下方法将同一模板文件包含到另一个页面(home.php)中时:

仅显示范围内的文本

注意:两个php页面(template-test.php和home.php)位于同一目录中


我一直在为此头痛。

如果您查看ACF文档,get_field()接受$post_id作为第二个参数,如果未提供,则默认为当前帖子

因此,如果您在模板测试页面中包含该文件,则模板测试页面ID将被传递(并将起作用),但如果您在我们的主页中包含该文件,则主页ID将被传递,这将不起作用,因为该页面在这些字段中没有任何内容

如果您想在任何页面ID上下文中访问这些字段,则需要显式提供该字段,并且无论其包含在何处,该字段都应有效。如果您知道页面段塞,则可以使用该字段获取ID

$page = get_page_by_path('my-slug');
get_field('sponsor_advertisement_one', $page->ID);
get_field('sponsor_advertisement_two', $page->ID);
ACF get_字段()文档:

如果您在其他位置调用它,请尝试使用
get\u template\u part('template','test'));
而不是include。我认为您使用的是ACF插件,请确保输入了帖子ID。它缺少输入值的特定帖子ID。解释了wordpress页面的生命周期。页面模板基本上显示了wordpress“路由”系统提供给它的数据(你可以有多个页面使用同一个模板,每个页面都会显示不同的内容),因此在其他地方包含它不会有多大作用。@Maqk谢谢你的解释阅读更多关于这个的内容。非常有用。谢谢!