我正面临一个奇怪的问题,我现在要解释什么。
Context
Plugins I\'m using: 自定义帖子类型UI/Advanced Custom Fields功能:我有一个名为“vendors”的自定义帖子类型。在这个帖子类型中,我在ACF上有几个自定义字段。其中一个字段称为“升级到主页”,设置为复选框。因此,这个想法很简单,如果选中该复选框,则在主页上显示该帖子。
所以这似乎很好,但当我试图将“突出显示的供应商”更改为另一个供应商时(未选中当前,选中期望以避免冲突),我发现我设置为特色的帖子没有显示,没有显示任何内容。
我开始测试,然后尝试其他供应商的帖子,发现这种行为是完全随机的,其中一些帖子正确发布到主页上,另一些则没有。我试图找出一种模式来确定可能的原因,但失败了。还尝试在发布良好的供应商中复制未能发布的供应商的设置,甚至设置与供应商仍在发布的内容完全相同的内容。
最后,我应该提到,我有一个页面,其中列出了某种“目录”,其中显示了所有供应商。我添加了一个简单的代码来检查“promote\\u to\\u homepage”输出是否正确,比如“如果选中了复选框,请打招呼”,然后发现主页上没有显示的帖子通过了目录页的测试。
我对这可能是什么想法都没有了,这就是为什么我在这里尝试,如果有人能给我一些帮助的话。
我在主页中使用的代码很简单:
<?php query_posts(\'post_type=vendors\');
while (have_posts()):the_post();
$featured = get_field(\'promote_to_homepage\', $post -> ID, true);
if ($featured){?><!-- show the content here -->
<?php }; endwhile; ?>
仅此而已。
提前感谢任何能在这方面帮助我的人。
胡安-
SO网友:Milo
没有第三个参数get_field, 可能是导致您出错的原因。
EDIT-
在您当前的代码中,如果最近的10篇帖子没有包含带有元键的帖子,那么您将什么也看不到,因为您只获得10篇帖子,然后对其进行过滤。任何没有指定帖子数量的查询都默认为您的阅读设置,您说的是10。
此外,如果这不是页面的主循环,则应该使用WP_Query
而不是query_posts
. 如果它是页面的主循环,那么应该使用pre_get_posts
动作挂钩,而不是query_posts
. 基本上,没有理由使用query_posts
:)
通过WP_Query
是专门查询具有键的项,而不是在事实发生后过滤它们:
$args = array(
\'posts_per_page\' => -1, // get all of them
\'post_type\' => \'vendors\',
\'meta_key\' => \'promote_to_homepage\'
);
$homepage_posts = new WP_Query( $args );
while( $homepage_posts->have_posts() ):
$homepage_posts->the_post();
// all your normal loop stuff here
the_title();
endwhile;