CMB2使用WP_Query在CPT上按日期对数据进行排序

斯坦·斯克里瓦涅克

您好,我想按活动日期对Workshop活动进行排序吗?我可以按其他meta_key(城镇,领导者,国家等)对数据进行排序。但不是在活动日期之前。

这里有元“国家”,但是因为它们彼此相邻,所以UTC没有区别。

在CBM2函数中,我设置了“日期”字段,它是meta box function.php的一部分

<!-- language: lang-php -->
        $cmb_data->add_field( array(
            'name'        => __( 'Event Date', 'workshops' ),
            'desc'        => __( 'Event Date', 'workshops' ),
            'id'          => $prefix . 'event_date',
            'type'        => 'text_date',
            'date_format' => 'd-m-Y',
    ) ) ;

这是CPT模板workshops.php

<!-- language: lang-php -->
      <section id="" class="">
                    <div class="">
                        <?php
                        $args = array(
                            'post_type'      => 'workshops',
                            'posts_per_page' => 10,
                            'meta_key'       => 'workshop_data_event_date',
                            'orderby'        => 'meta_value',
                            'order'          => 'DESC'
                        );

                        $articles = new WP_Query( $args );

                        if ( $articles->have_posts() ) : $articles->the_post();
                            echo '<div class="cptul-stripe-2 article-post__stats">';
                            foreach ( $articles->posts as $article ) {
    //                            var_dump($article);
                                echo '<div class="cptli-stripe-2__wrap">
                                <div class="cptli-stripe-2--header">
                                <div><span class="name">'
                                     . get_post_meta( $article->ID, 'workshop_data_leader', true )
                                     . '</span>
                                <span class="nameWhat"> povede workshop</span>
                                </div>
                                        <a class="stripe-title-mid" href="' . get_permalink( $article->ID ) . '">'
                                     . $article->post_title . '</a> 
                                         <ul>
                                            <li id="event-date" class="article-post__event-date"><span 
                                            class="article-post__stats-icon">'
                                     . webovkar_get_svg( array( 'icon' => 'calendar' ) ) . '</span>'
                                     . get_post_meta( $article->ID, 'workshop_data_event_date', true ) .

                                     '</li><li class="article-post__event-town"><span class="article-post__stats-icon"> '
                                     . webovkar_get_svg( array( 'icon' => 'mmarker' ) ) . '</span>'
                                     . get_post_meta( $article->ID, 'workshop_data_town', true ) . ' | '
                                     . get_post_meta( $article->ID, 'workshop_data_country', true ) .
                                     '</li></ul> </div>


                                     <div class="cptli-stripe-2--data">'
                                     . apply_filters( 'the_content', get_post_meta( $article->ID, 'workshop_data_excerpt',
                                        true ) ) .
                                     '</div>
                                    </div>';
                            }
                            echo '</div>';
                        endif; ?>
                        <?php wp_reset_postdata(); ?>
                    </div>
                </section> 
斯坦·斯克里瓦涅克

在玩了一点代码之后,我找到了适合我的解决方案,但我不知道这是否是正确的代码样式。我必须移至时间戳记土地才能使其正常工作。

$args = array(
    'post_type' => 'workshops',
    'meta_query' => array(
        array(
            'key' => 'workshop_data_event_date',
            'value' => current_time('timestamp'),
            'compare' => '>'
        )
    ),
    'meta_type' => 'text_date_timestamp',
    'orderby'   => 'meta_value_num',
    'order'     => 'DESC'
);

foreach环路

$datum = get_post_meta( $article->ID, 'workshop_data_event_date', true );

和Imdate()用来通过回显将UNIX转换为前端的日期格式

date('d-m-Y', $datum)

编辑:因为我需要在头版上显示将在未来30天内发生的事件,所以我已将此查询添加到头版。

$today = current_time('timestamp');
$featuremonth = current_time('timestamp') + 2629743 ; // num = UNIX 30 days
$meta_query = array(
    'value' => array( $today, $featuremonth),
    'compare'   => 'BETWEEN',
    'type'      => 'NUMERIC'
);
    $args = array(
        'post_type'      => 'workshops',
        'posts_per_page' => -1,
        'meta_key'       => 'workshop_data_event_date',
        'orderby'        => 'meta_value',
        'order'          => 'DESC',
        'meta_query'     => array( $meta_query )
    );

$articles = new WP_Query( $args );

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章