使用高级自定义字段插件显示POST_OBJECT内容

时间:2013-04-24 作者:George Grigorita

我很难找出这段代码的错误。

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; ?>
现在前端一切正常。谢谢大家的帮助。

3 个回复
SO网友:s1lv3r

代码一开始似乎没有语法错误。您使用的字段类型是什么?关系

还有,为什么要覆盖$post_object 它首先来自哪里?缺少该部分代码。

要获取附加到当前帖子的字段(在您正在查看的当前循环/全局$post对象内),只需使用get_field(\'testimonial\') 没有ID参数。

如果要将字段附加到另一个post\\u对象,是否检查了$post_object->ID 在您发布的第一行之前包含有效的post\\u id?

Edited according to new info:

这是启用了“多个”选项的post对象字段吗?文档(http://www.advancedcustomfields.com/resources/field-types/post-object/) 假设此字段仅在启用多个选项时返回一个post对象数组,否则它将仅返回一个post对象。这意味着您不需要在代码中使用foreach循环。在这种情况下,您应该这样使用它:

<?php $featured_testimonial = get_field(\'testimonial\', $post_object->ID); ?>
            <a href="<?php echo get_permalink($featured_testimonial->ID); ?>">
                <p class="descr"><?php echo get_the_title($featured_testimonial->ID) ?></p>
            </a> 

SO网友:montrealist

第一件事第一。您是否从管理端的下拉列表中选择了一个值?如果没有,那么您将不会从get_field 对于该页。

此外,如果您有权访问数据库,请确保在_postmeta 桌子

SELECT * FROM `wp_postmeta` WHERE `post_id` = XX
在哪里XX 是您的页面ID,并且YY (见下文)是您从管理端的下拉列表中选择的推荐信的ID。

在这些结果中,您应该有如下几行:

meta_id    post_id    meta_key        meta_value
1607       XX         testimonial     YY 
1608       XX         _testimonial    field_5177d30141f17
如果在DB中正确设置了所有这些,那么问题就出在您的代码上。

SO网友:Prashant Baldha

此代码将有帮助

<?php
$featured_testimonial = get_field(\'testimonial\', $post_object->ID); 
?>
<a href="<?php echo get_the_permalink( $featured_testimonial->ID ); ?>"><?php echo $featured_testimonial->post_title; ?></a>

结束

相关推荐

使用高级自定义字段插件显示POST_OBJECT内容 - 小码农CODE - 行之有效找到问题解决它

使用高级自定义字段插件显示POST_OBJECT内容

时间:2013-04-24 作者:George Grigorita

我很难找出这段代码的错误。

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; ?>
现在前端一切正常。谢谢大家的帮助。

3 个回复
SO网友:s1lv3r

代码一开始似乎没有语法错误。您使用的字段类型是什么?关系

还有,为什么要覆盖$post_object 它首先来自哪里?缺少该部分代码。

要获取附加到当前帖子的字段(在您正在查看的当前循环/全局$post对象内),只需使用get_field(\'testimonial\') 没有ID参数。

如果要将字段附加到另一个post\\u对象,是否检查了$post_object->ID 在您发布的第一行之前包含有效的post\\u id?

Edited according to new info:

这是启用了“多个”选项的post对象字段吗?文档(http://www.advancedcustomfields.com/resources/field-types/post-object/) 假设此字段仅在启用多个选项时返回一个post对象数组,否则它将仅返回一个post对象。这意味着您不需要在代码中使用foreach循环。在这种情况下,您应该这样使用它:

<?php $featured_testimonial = get_field(\'testimonial\', $post_object->ID); ?>
            <a href="<?php echo get_permalink($featured_testimonial->ID); ?>">
                <p class="descr"><?php echo get_the_title($featured_testimonial->ID) ?></p>
            </a> 

SO网友:montrealist

第一件事第一。您是否从管理端的下拉列表中选择了一个值?如果没有,那么您将不会从get_field 对于该页。

此外,如果您有权访问数据库,请确保在_postmeta 桌子

SELECT * FROM `wp_postmeta` WHERE `post_id` = XX
在哪里XX 是您的页面ID,并且YY (见下文)是您从管理端的下拉列表中选择的推荐信的ID。

在这些结果中,您应该有如下几行:

meta_id    post_id    meta_key        meta_value
1607       XX         testimonial     YY 
1608       XX         _testimonial    field_5177d30141f17
如果在DB中正确设置了所有这些,那么问题就出在您的代码上。

SO网友:Prashant Baldha

此代码将有帮助

<?php
$featured_testimonial = get_field(\'testimonial\', $post_object->ID); 
?>
<a href="<?php echo get_the_permalink( $featured_testimonial->ID ); ?>"><?php echo $featured_testimonial->post_title; ?></a>

相关推荐

如何让`wp-list-table`显示我在Custom-Post中的`Custom-Fields`

一切都好吗<我需要wp-list-table 也要显示custom-fields 在每个custom-post 我有,但我不知道如何做到这一点,在这幅图中,它显示了带有字段的表格:Title, Author and Publication Date: 我想要的是能够选择custom-fields 将出现,例如以下示例Title, Carta, Naipe, Author, and Date of Publication: