我似乎无法在循环中显示值为yes的帖子..
这是我的循环:
<?php
$args = array(
'numberposts' => 1,
'post_type' => 'event',
'posts_per_page' => '1',
'meta_key' => 'sponsored_event',
'meta_value' => 'yes'
);
$the_query = new WP_Query( $args );
?>
<?php if ( have_posts() ) : while ( $the_query->have_posts() ) : $the_query->the_post(); ?>
<div class="sponsored-event">
<div class="sponsored-image" style="background-image: url(<?php the_field( 'event_image' ); ?>);"></div>
<div class="sponsored-info">
<h2>Sponsored Event</h2>
<h1><strong><?php the_title(); ?></strong></h1>
<p><strong>Date</strong></p><br>
<p class="place"><?php the_field( 'event_location' ); ?></p>
<p class="time"><?php the_field( 'event_time' ); ?></p>
<p><?php the_field( 'excerpt' ); ?></p>
</div>
</div>
<?php endwhile; else: ?>
<?php endif; ?>
答案 0 :(得分:1)
这对我有用:
<?php
$args = array(
'post_type' => 'event',
'showposts' => 1,
'orderby' => 'date',
'meta_query' => array(
array(
'key' => 'sponsored_event',
'value' => 1,
'compare' => 'LIKE'
)
)
);
$the_query = new WP_Query( $args );
?>
<?php if ( $the_query->have_posts() ) : while ( $the_query->have_posts() ) : $the_query->the_post(); ?>
<a href="<?php the_permalink(); ?>"><div class="sponsored-event">
<div class="sponsored-image" style="background-image: url(<?php the_field( 'event_image' ); ?>);">
</div>
<div class="sponsored-info">
<h2>Sponsored Event</h2>
<h1><strong><?php the_title(); ?></strong></h1>
<p><strong>Date</strong></p><br>
<p class="place"><?php the_field( 'event_location' ); ?></p>
<p class="time"><?php the_field( 'event_time' ); ?></p>
<p><?php the_field( 'excerpt' ); ?></p>
</div>
</div></a>
<?php endwhile; else: ?>
<?php endif; ?>
答案 1 :(得分:0)
尝试使用meta_query
来完成此操作。使用以下内容更新您的$args
:
$args = array(
'post_type' => 'event',
'posts_per_page' => '1',
'meta_query' => array(
array(
'key' => 'sponsored_event',
'compare' => 'LIKE',
'value' => 'yes',
),
),
);
您还需要将if ( have_posts() )
更新为if ( $the_query->have_posts() )
。
有关meta_query
的更多信息,请访问:https://codex.wordpress.org/Class_Reference/WP_Meta_Query
答案 2 :(得分:0)
您可以使用任何一种选择
,而不是同时使用post_per_page和数字帖子尝试下面提供的任何方法。根据{{1}}建议使用ACF
,但对于WordPress,您也可以根据Method 1
检索信息。
方式:1 强>
Method 2
方式:2 强>
尝试使用$args = array(
'posts_per_page' => 1,
'post_type' => 'event',
'meta_key' => 'sponsored_event',
'meta_value' => 'yes'
);
$the_query = new WP_Query( $args );
<?php if ($the_query->have_posts() ) : while ( $the_query->have_posts() ) : $the_query->the_post(); ?>
//Your Code over here to Manipulate
<?php endwhile; else: ?>
<?php endif; ?>
中的=
运算符进行比较的元查询。
meta_query
答案 3 :(得分:0)
if ( have_posts() )
应引用查询:if ( $the_query->have_posts() )
。
此外,正如已经提到的那样,您应该使用'posts_per_page' => 1,
而不是numberposts
。
答案 4 :(得分:0)
我在我的机器上测试了代码并且工作正常!只是(正如其他人已经提到的)if()
语句是错误的,将其更改为:
if ( $the_query->have_posts() )
但是现在我有一个非常愚蠢的问题......在创建ACF字段后,你是否用meta字段保存了一些帖子(事件)(是或否)?如果没有,WP将找不到任何东西,因为postmeta没有保存到数据库中。
如果正确保存了postmeta,你有没看过数据库?