我正在使用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\'); ?>
它返回预期值
最合适的回答,由SO网友:Pieter Goosen 整理而成
您的查询似乎正常,但您确实需要在完成查询后重置查询。只需添加wp_reset_postdata()
之间endwhile
和endif
. 否则,可能会导致其他查询受到此查询的影响。反之亦然,如果不重置,其他自定义查询也会影响此查询。
我只能推测可能的错误,但这里有几个要点需要检查
post_type
-> 默认情况下,除税务查询外,此参数设置为post
. 如果您使用的是自定义帖子类型或页面,那么查询将不返回任何内容post_status
-> 默认情况下,此设置为publish
, private
在用户登录时添加。如果您的帖子状态是其他状态,则需要将其添加到查询中。
如果这不起作用,请在查询下方放置以下代码,以检查SQL请求
echo $the_query->request;
然后从那里拿走。
如果您想“safegaurd”一个新实例WP_Query
针对过滤器的修改,只需添加\'suppress_filters\' => true,
到您的查询参数。这在调试中也很有用,因为这可以是一个快速测试,以查看自定义查询的未扩展行为是否由自定义筛选器引起
在您的短代码上,甚至在您创建短代码之前,如果您要使用do_shortcode()
在模板文件中,您应该重新考虑并只使用函数并删除短代码。短代码需要被解析,因此它比只调用函数要慢
如果您确实看到了适合您需要的快捷码的使用,那么您需要相应地调整您的自定义查询。短代码不应回显其输出,而应返回它。为此,请使用get_
为当前使用的模板标记的函数添加前缀,然后将HTML标记和模板标记添加到变量中,只需在末尾返回变量
其他信息: