如何循环访问某些自定义字段值

时间:2015-02-08 作者:tomexx

我正在使用ACF插件,我想创建一个聚合短代码,其中包含来自使用自定义字段的其他页面的数据。你能帮我怎么开始吗?

非常感谢。

因此,我的一些帖子允许使用“photo”等自定义字段。我想查询所有帖子,并从包含“照片”自定义字段的所有页面获取数据。

I have query that should work

<?php
// args
$args = array(
    \'meta_key\' => \'photo\'
);

// get results
$the_query = new WP_Query( $args );

// The Loop
?>
<?php if( $the_query->have_posts() ): ?>
    <ul>
    <?php while ( $the_query->have_posts() ) : $the_query->the_post(); ?>
        <li>
            <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
        </li>
    <?php endwhile; ?>
    </ul>
<?php endif; ?>

But it returns no results.

如果我打电话

<?php the_field(\'photo\'); ?>
它返回预期值

1 个回复
最合适的回答,由SO网友:Pieter Goosen 整理而成

您的查询似乎正常,但您确实需要在完成查询后重置查询。只需添加wp_reset_postdata() 之间endwhileendif. 否则,可能会导致其他查询受到此查询的影响。反之亦然,如果不重置,其他自定义查询也会影响此查询。

我只能推测可能的错误,但这里有几个要点需要检查

  • post_type -> 默认情况下,除税务查询外,此参数设置为post. 如果您使用的是自定义帖子类型或页面,那么查询将不返回任何内容

  • post_status -> 默认情况下,此设置为publish, private 在用户登录时添加。如果您的帖子状态是其他状态,则需要将其添加到查询中。

如果这不起作用,请在查询下方放置以下代码,以检查SQL请求

echo $the_query->request;
然后从那里拿走。

如果您想“safegaurd”一个新实例WP_Query 针对过滤器的修改,只需添加\'suppress_filters\' => true, 到您的查询参数。这在调试中也很有用,因为这可以是一个快速测试,以查看自定义查询的未扩展行为是否由自定义筛选器引起

在您的短代码上,甚至在您创建短代码之前,如果您要使用do_shortcode() 在模板文件中,您应该重新考虑并只使用函数并删除短代码。短代码需要被解析,因此它比只调用函数要慢

如果您确实看到了适合您需要的快捷码的使用,那么您需要相应地调整您的自定义查询。短代码不应回显其输出,而应返回它。为此,请使用get_ 为当前使用的模板标记的函数添加前缀,然后将HTML标记和模板标记添加到变量中,只需在末尾返回变量

其他信息:

结束

相关推荐