显示最近的帖子 - 如果"是"被选为单选按钮值

时间:2016-09-01 16:41:12

标签: php wordpress advanced-custom-fields

以下是我的单选按钮的设置: enter image description here

我似乎无法在循环中显示值为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; ?>

5 个答案:

答案 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,你有没看过数据库?