Я создал код для прошлого и предстоящего события, используя мета-поле.Я хочу показать ближайшие ближайшие сообщения только сейчас показать все предстоящие сообщения - PullRequest
0 голосов
/ 10 октября 2018

Я создал с помощью метабокса.Я хочу показывать ближайший последний предстоящий пост только в том случае, если дата поста закрыта, а другой ближайший пост должен показать это место. Мой код показывает все предстоящие посты.

function timer2_shortcode( $atts , $content = null ) {

    $atts = shortcode_atts(
        array(
            'category' => '',
        ),
        $atts
     );

     $args = array( 
       'post_type' => 'post',
       'category_name' =>  $atts['category'],
       'posts_per_page' => -1,       
       'meta_key' => 'event_start_date', 
       'orderby'           => 'meta_value',
       'order'             => 'DSC' 
     );

     $the_query = new WP_Query( $args );
     if ( $the_query->have_posts() ) {
         while ( $the_query->have_posts() ) {
             $the_query->the_post(); 

             if (has_post_thumbnail( $post->ID ) ) {

             $url = wp_get_attachment_image_src( get_post_thumbnail_id( $post->ID ), 'single-post-thumbnail' );

             } 
             else {

                 $image = get_bloginfo('template_directory') . '/assets/images/default.png';

             }

             $start_date =  get_post_meta(get_the_ID(), 'event_start_date', true);

             $end_date =  get_post_meta(get_the_ID(), 'event_end_date', true);

             $start_time = strtotime($start_date);

             $start = date('Y-m-d',$start_time); 

             $end_time = strtotime($end_date);

             $end = date('Y-m-d',$end_time);

             $start_day = date('d',$start_time);

             $end_day = date('d',$end_time);

             $start_year = date('Y',$start_time);

             $end_year = date('Y',$end_time);

             $start_month = date('M',$start_time);

             $end_month = date('M',$end_time);

             if ($start == $end) {

                 $duration = $start_month. ' ' . $start_day.', '.$start_year;

             } else {

                 $duration = $start_month. ' ' . $start_day.' - '  . $end_month.' '.$end_day.', '.$start_year;

             }

             $current_date = date('Y-m-d');

             if ($start == $end) {

                 $duration = $start_month. ' ' . $start_day.', '.$start_year;

             } else {

                 $duration = $start_month. ' ' . $start_day.' - '  . $end_month.' '.$end_day.', '.$start_year;

             }

             $current_date = date('Y-m-d');

             if (($start  < $current_date && $end < $current_date) || (!$start_date)  || (!$end_date) ) {

                 if (has_post_thumbnail( $post->ID ) ) {

                     $url = wp_get_attachment_image_src( get_post_thumbnail_id( $post->ID ), 'single-post-thumbnail' );

                     $imagesopen='<div id="custom-bg" style="background-image: url('. $url[0] .')">';
                     $imagesclose='</div>';

                } else {

                     $image = get_bloginfo('template_directory') . '/assets/images/default.png';

                     $images='<div id="custom-bg" style="background-image:url('.$image.')"></div>';
                }

                $outercat.='<div class="col-md-6 pad0">';

                $outercat.='<a href='.get_the_permalink().'>';

                $outercat.=$imagesopen;

                $outercat.='<div class="col-table ">';

                $outercat.='<div class="col-vcont">';

                $outercat.='<h1 class="title-link">'.get_the_title().'</h1>';

                $outercat.='</div>';

                $outercat.='</div>';

                $outercat.=$imagesclose;

                $outercat.='</a>';

                $outercat.='</div>';


            }

            if ( $end >= $current_date ) {


                $headcat.='<script>

                var countDownDate = new Date("'.countdown__get_meta( 'countdown__countdown_month' ) .countdown__get_meta( 'countdown__countdown_date' ).', '.countdown__get_meta( 'countdown__countdown_year' ).' 15:37:25").getTime();

                </script>'; 

                $headcat.='<div class="col-md-6 pad0">';

                $headcat.='<div class="first-blog-bg">';

                $headcat.='<div class="unique-bg" style="background-image: url('. $url[0] .')">';

                $headcat.='<div class="col-table ">';

                $headcat.='<div class="col-vcont">';

                $headcat.='<h1>'.get_the_title().'</h1>';

                $headcat .= '<p>' . limit_words(get_the_excerpt(), '20') . '</p>';  

                $headcat.='<span>'.activity_meta_get_meta( 'activity_meta_location' ).'</span>';

                $headcat.='<span>'.activity_meta_get_meta( 'activity_meta_time_' ).'</span>';

                $headcat.='<p class="testy" id="demo'.get_the_ID().'"></p>';

                $headcat.='</div>';

                $headcat.='</div>';

                $headcat.='</div>';

                $headcat.='</div>';

                $headcat.='</div>';

           }    

           wp_reset_postdata();

       }

    }

    $out.='<section class="section category-parent">';

    $out.='<div class="container">';

    $out.='<div class="row">';

    $out.='<div class="col-md-6">';

    $out.='<div class="row">';

    $out.=$outercat;

    $out.='</div>';

    $out.='</div>';

    $out.=$headcat;

    $out.='</div>';

    $out.='</section>';

    return $out;

}

add_shortcode( 'timer2', 'timer2_shortcode' );

1 Ответ

0 голосов
/ 13 октября 2018

Установив 'posts_per_page' => -1,, вы получаете все сообщения.Если вы хотите, чтобы отображались только 5 сообщений (событий), установите для этого значения значение 5. 'posts_per_page' => 5,

. Затем измените значение $args, добавив в него предложение WHERE, чтобы выбрать сообщения, в которых значение event_start_date превышает сегодняшнюю дату.Подход можно найти здесь: https://wordpress.stackexchange.com/questions/57979/wp-query-show-posts-that-end-later-than-today

...