页面模板中的高级自定义字段

时间:2014-10-07 15:06:03

标签: php wordpress advanced-custom-fields

我最近在Wordpress中使用高级自定义字段做了很多工作,并且在使用Posts时发现它们非常有用,但在使用Pages时似乎无法获得相同的结果。

我目前有一个页面,它使用循环来浏览所有类别' news'的帖子。循环为每篇新闻文章创建一个结构,并将它们列在页面左侧的页面上,分页。在页面的右侧,我有一个部分需要显示附加的ACF帖子对象(在这种情况下是一个自定义的帖子类型'员工',在页面编辑部分分配)。

所以左边是帖子的循环,右边我需要一个Post对象来显示。唯一的问题是获取帖子对象数据的所有常用技术似乎都不起作用:

    <?php
        $post_object = get_field('attached_story');

        print_r($post_object);
    ?>

这不会返回任何内容。我把它放在循环内/循环外无济于事(我想这是为什么它不起作用,因为它需要在循环内)。显示帖子的循环如下所示:

    <?php
        $paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
        $args = array('post_type' => 'news', 'showposts' => '4', 'paged' => $paged); 
        $the_query = new WP_Query( $args );
        ...
        if( have_posts() ) : while($the_query->have_posts()) : $the_query->the_post()
    ?>

我的问题是 - 在页面模板中使用帖子对象有什么特别的方法吗?是否有一个不同的循环需要实例化以循环页面自定义字段而不是帖子?最后有一种方法可以完整地查看当前页面数组,包含所有自定义字段吗?

2 个答案:

答案 0 :(得分:0)

以防万一其他人在将来遇到此问题,解决方案是使用query_posts()方法设置循环而不是新的WP_Query&#39;课堂电话。我的循环调用现在看起来像这样:

$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
query_posts(array('post_type' => 'news','showposts' => '4', 'paged' => $paged));

现在使用以下代码了解附件:

<?php
$post_object = get_field('attached_story');
if( $post_object ):         
$post = $post_object;
setup_postdata( $post ); ?>

    <?php $short_desc = get_field('short_description'); ?>
    All over operations...

<?php wp_reset_postdata();?>
<?php endif; ?>

答案 1 :(得分:0)

您可以在循环中使用以下代码:

<?php $values = get_post_custom_values("your custom field name");
 if($values){?>
<?php echo $values[0]; ?>
<?php } ?>