具有自定义帖子类型的存档页面上的事件列表

时间:2019-02-13 16:59:39

标签: wordpress meta-boxes

我正在使用Wordpress。我想显示即将发生的事件,这些事件是自定义帖子类型模板(posttype-archive.php)中的帖子。我想将带有unix timestam的自定义字段与当前时间戳进行比较。它总是以某种方式列出该特定自定义帖子类型的所有帖子。

<?php
$today = time();

//First Query for Posts matching term1
$args = array(
    'post_type' => 'exhibitions',
    'relation' => 'AND',
    'meta_query'    => array(  
                   'key'     => 'start_date',  
                   'value'   => $today, 
                   'compare' => '>=',  
                   'type'    => 'NUMERIC'
              )

);
$query = new WP_Query( $args );



if ( have_posts() ) {


    $term = $query->queried_object;

    while ( have_posts() ) : the_post(); ?>

    <?php  ?>

    <?php print_r ($args); ?>

    <div class="auss_left">
        <h2><?php echo rwmb_meta( 'gastgeberin' ); ?><br />
        <?php the_title(); ?></h2>

        <?php 
        $date =rwmb_meta( 'Date' );
        if (!$date){
        echo rwmb_meta( 'start_date' ); ?> - <?php echo rwmb_meta( 'end_date' ); 
        }
        ?>

        <?php if ($date){
            echo rwmb_meta( 'Date' ); 
        } ?>


        <?php echo rwmb_meta( 'Ort' ); ?>
        <?php echo rwmb_meta( 'Adresse' ); ?>

        <?php echo rwmb_meta( 'Karte' ); ?>

        Öffnungszeiten:<br/>
        <?php echo rwmb_meta( 'oeffnungszeiten' ); ?>

        Vernissage:<br/>
        <?php echo rwmb_meta( 'vernissage' ); ?>


    </div>

    <div class="auss_right">
        <?php the_content(); ?>
    </div>


        <?php endwhile;
}

//RESET YOUR QUERY VARS
wp_reset_query();

 ?>

我希望此WP查询仅列出即将发生的事件,但始终列出所有事件。

2 个答案:

答案 0 :(得分:0)

您正在创建自定义WP_Query,但是您没有在任何地方使用它。尝试以下方法:

<?php
$today = time();

//First Query for Posts matching term1
$args = array(
    'post_type'  => 'exhibitions',
    'relation'   => 'AND',
    'meta_query' => array(
        array(
            'key'     => 'start_date',
            'value'   => $today,
            'compare' => '>=',
            'type'    => 'NUMERIC',
        ),
    ),
);

$events_query = new WP_Query( $args );

if ( $events_query->have_posts() ) :
    while ( $events_query->have_posts() ) : $events_query->the_post(); ?>
        <div class="auss_left">
            <h2>
                <?php echo rwmb_meta( 'gastgeberin' ); ?>

                <br />

                <?php the_title(); ?>
            </h2>

            <?php
            $date = rwmb_meta( 'Date' );
            if ( ! $date ) {
                echo rwmb_meta( 'start_date' ); ?> - <?php echo rwmb_meta( 'end_date' );
            } else {
                echo rwmb_meta( 'Date' );
            }

            echo rwmb_meta( 'Ort' );

            echo rwmb_meta( 'Adresse' );

            echo rwmb_meta( 'Karte' );
            ?>

            Öffnungszeiten:<br/>

            <?php echo rwmb_meta( 'oeffnungszeiten' ); ?>

            Vernissage:<br/>

            <?php echo rwmb_meta( 'vernissage' ); ?>
        </div><!-- /.auss_left -->

        <div class="auss_right">
            <?php the_content(); ?>
        </div><!-- /.auss_right -->
    <?php endwhile;
endif;

//RESET YOUR QUERY VARS
wp_reset_postdata();

也如@josedasilva所述,您应该仔细检查为“ start_date”元键存储的值是否为整数。

答案 1 :(得分:0)

我找到了一个解决方案:https://wordpress.stackexchange.com/questions/313355/use-meta-query-to-display-events-by-date-in-custom-field

我这样做是可行的,我认为这只是array-Structure的区别,我使用了YYYY-MM-DD格式。