我很难找出这段代码的错误。
What I\'m trying to do: 使用ACF插件在admin中设置一个自定义字段,在所有页面的元框中列出一个推荐列表(自定义帖子类型)。从下拉菜单中,客户可以选择将显示在该特定页面上的推荐信。
我正在使用一个稍微修改过的Twenty12主题版本,这是我在首页模板中使用的代码。
The code:
<?php $featured_testimonial = get_field(\'testimonial\', $post_object->ID); ?>
<?php foreach ($featured_testimonial as $post_object): ?>
<a href="<?php echo get_permalink($post_object->ID); ?>">
<p class="descr"><?php echo get_the_title($post_object->ID) ?></p>
</a>
<?php endforeach; ?>
The problem: 此代码在首页上没有显示任何内容。我做了一个print_r( $post_object )
它显示了我推荐信中的所有信息(标题、日期、内容等)。The solution: 在过去的两三天里,我一直在ACF支持论坛上寻求答案,以下是我得到的回复:
post对象字段将返回post对象,而不是HTML。在post\\u对象字段上使用\\u字段将导致不显示任何内容。
您需要将其存储为变量,然后使用ID或post\\u title变量输出所需的HTML
我是否不理解解决方案,或者我实际上在做信息所说的事情,而问题在其他地方?
Later edit: 这是我目前在ACF中对推荐字段的设置:
Rules: Post Types - Page.
Field Name - Testimonial.
Field Type: Post Object.
Post type: Testimonial.
Filter from taxonomy: All.
“规则”意味着自定义字段将只出现在页面上,并且它将只列出“推荐”自定义帖子类型中的“帖子对象”。在管理方面,一切似乎都很好,只是我无法在前端显示任何内容。Final edit: 根据@s1lv3r的建议,我将字段类型从“post object”更改为“relationship”。我还修改了如下代码:
<?php $posts = get_field(\'testimonial\'); ?>
<?php if( $posts ): ?>
<?php foreach( $posts as $post): // variable must be called $post (IMPORTANT) ?>
<?php setup_postdata($post); ?>
<?php echo get_the_excerpt(); ?>... <a href="<?php the_permalink(); ?>">+More</a>
<?php the_title(); ?>
<?php endforeach; ?>
<?php wp_reset_postdata(); ?>
<?php endif; ?>
现在前端一切正常。谢谢大家的帮助。