在上面的示例中,我看到您从 about 页面获取字段数据,但您没有将其添加到上下文中。您的模板不显示该数据,因为您没有将其交给模板。
您首先设置上下文:
$context = Timber::get_context();
然后你得到应该显示的当前帖子数据:
$post = new TimberPost();
现在你确实 load 了$post
,但它还没有在你的上下文中。您必须将要在页面上显示的数据放入$context
数组中。然后你渲染它 trough Timber::render( 'template.twig', $context )
。您的 Twig 模板将仅包含其中存在的数据$context
(要完整:您也可以使用 Twig 模板中的函数来获取数据,但这是另一个主题)。
要添加从 about 页面加载的数据,您必须这样做:
$about_page_id = 7;
$about = new TimberPost( $about_page_id );
$context['about'] = $about;
看到这条线$about->acf = get_field_objects($about->ID)
不再存在了吗?您不需要它,因为 Timber 会自动将您的 ACF 字段加载到发布数据中。现在可以通过{{ about.the_unstrung_hero }}
Twig 模板访问您的字段。
回到你想要实现的目标:
我会这样解决它。
就像您问题的评论中提到的Deepak jha一样,我也会使用get_field()
函数的第二个参数通过帖子 ID 从帖子中获取字段数据。
如果您只想显示一个 ACF 字段的值,则不需要加载 about 页面的整个帖子。
page-home.php
$context = Timber::get_context();
$post = new TimberPost();
$context['post'] = $post;
// Add ACF field data to context
$about_page_id = 7;
$context['the_unstrung_hero'] = get_field( 'the_unstrung_hero', $about_page_id );
Timber::render( array( 'page-' . $post->post_name . '.twig', 'page.twig' ), $context );
然后在page-home.twig中,您可以访问 post 中的字段数据。
<p>{{ the_unstrung_hero }}</p>