我正在创建一个属性网站,主页上有一个特色属性。要将属性定义为特征,我创建了一个acf复选框,选中时值为Yes。我已经尝试通过检查复选框是否已选中来过滤帖子,但我无法弄明白。这是我的代码无效;
<?php
$args = array(
'post_type' => 'property',
'posts_per_page' => 1,
'meta_key' => 'featured_property',
'meta_value' => 'Yes'
);
$query = new WP_Query( $args );
?>
<?php if( $query->have_posts() ) : ?>
<?php
$main_field = get_field('images');
$first_row = $main_field[0];
$img = $first_row['image'];
$img_crop = $img['sizes']['fresh_size'];
?>
<img src="<?php echo $img_crop; ?>" alt="featuredproperty" class="img-fluid">
<?php wp_reset_postdata(); ?>
<?php endif; ?>
请阅读:对于任何尝试使用复选框执行此操作的人,就像我不这样做。经过一番研究后,我发现“复选框被存储为序列化数据而你无法使用WP_Query来过滤复选框字段”而是使用true / false来检查值是否等于'1'或'2 “取决于你想要达到的目标。
https://support.advancedcustomfields.com/forums/topic/using-checkbox-fields-in-custom-queries/
答案 0 :(得分:1)
删除此部分:
'meta_key' => 'featured_property',
'meta_value' => 'Yes'
相反,过滤出在循环内检查了复选框的人。你也缺少循环的部分。试试这段代码:
<?php if( $query->have_posts() ) : ?>
(...)
<!-- start of the loop -->
<?php while ( $the_query->have_posts() ) : $the_query->the_post(); ?>
<?php if( get_field('featured_property') ) { // << FROM HERE ?>
<img src="<?php echo $img_crop; ?>" alt="featuredproperty" class="img-fluid">
<?php } // << TO HERE ?>
<?php endwhile; ?><!-- end of the loop -->
<?php wp_reset_postdata(); ?>
<?php endif; ?>
我已经删除了代码的第一部分,以便于阅读。
-
或者,如果您想使用meta_key,请尝试添加:
'compare' => 'EXISTS'
答案 1 :(得分:0)
<?php
$args = array(
'post_type' => 'property',
'posts_per_page' => 1,
'meta_key' => 'featured_property',
'meta_value' => 'Yes'
);
$query = new WP_Query( $args );
?>
<?php if( $query->have_posts() ): ?>
<ul>
<?php while( $query->have_posts() ) : $query->the_post();
$images = get_field('images');
$first_row = $main_field[0];
$img = $first_row['image'];
$img_crop = $img['sizes']['fresh_size'];
?>
<img src="<?php echo $img_crop; ?>" alt="featuredproperty" class="img-fluid">
<?php endwhile; ?>
</ul>
<?php endif; ?>
<?php wp_reset_query(); // Restore global post data stomped by the_post().
?>
请检查您在acf复选框下的设置&#34;选择&#34;,检查它是否&#34;是:是&#34;或者&#34;是的:是&#34;并修复您的元数据&#39;如果你有&#34;是的:是&#34;到meta_value&#39; =&GT; &#39;是&#39 ;.复选框将数据保存为值标签。我认为您的复选框配置存在问题。
什么类型的图像&#39;你用的领域?是转发器还是画廊?如果你使用gallery然后你需要使用图像的src: $ images = get_field(&#39; images&#39;); $ img_crop = $ images [0] [&#39;尺寸&#39;] [&#39; fresh_size&#39;];