shortcode order for event custom post type

admin2025-01-07  3

ok im working on a website using post type event with post_meta event_start_date, i created a shortcode and everything is displaying fine except for it displaying in order, it seems as its not displaying by using meta_key nor meta_value. this the page / you'll notice the date order is wrong, i want it to display the most recent date first then the other dates following. side note im using more fields plugin to create post_meta and is set to date entered 2015-01-01. here is my code

    // SHORTCODE event
function event_shortcode( $atts ) {
extract( shortcode_atts( array( 'limit' => -1, 'type' => 'event'), $atts ) );   

$eventlist = '';

$paged = get_query_var('paged') ? get_query_var('paged') : 1;  

$carousel_query = new WP_Query(array ( 
    'posts_per_page' => $limit, 
    'post_type' => $type, 
    'post_status'  =>  'publish',
    'order' => 'DESC',
    'orderby' => 'meta_value_num',
    'meta_key' => 'event_start_date',
    'meta_query' => array(
   // 'relation'  =>   'AND',
    array(
            'key' => 'event_start_date',
         'value' => date('Y-m-d', strtotime('-6 hours')), //value of "order-date"
         'compare' => '>=', //show events greater than or equal to today
         'type' => 'CHAR'
        )
    ),
    'paged' => $paged ));

if ($carousel_query->have_posts()) :

$eventlist .= '<ul class="event-list clearfix">';

while ($carousel_query->have_posts()) : $carousel_query->the_post();

$event_artist = wp_strip_all_tags( get_the_term_list( get_the_ID(), 'artist_event', ' ', ' , ', ' ') );

$event_start_date = get_post_meta(get_the_ID(), 'event_start_date', true );
$fixed_date_day = strtotime($event_start_date);
$fixed_date_month = strtotime($event_start_date); 
$event_start_time = get_post_meta(get_the_ID(), 'event_start_time', true );

$fixed_time_start = strtotime($event_start_time); 

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

$fixed_time_end = strtotime($event_end_time); 

$event_location = get_post_meta(get_the_ID(), 'event_location', true );
$event_address = get_post_meta(get_the_ID(), 'event_address', true );
$event_city = get_post_meta(get_the_ID(), 'event_city', true );
$event_state = get_post_meta(get_the_ID(), 'event_state', true );
$event_zipcode = get_post_meta(get_the_ID(), 'event_zipcode', true );
$event_telephone = get_post_meta(get_the_ID(), 'event_telephone', true );
$event_website = get_post_meta(get_the_ID(), 'event_website', true );
$event_description = get_post_meta(get_the_ID(), 'event_description', true );
$event_url = get_post_meta(get_the_ID(), 'event_url', true );
$event_button = get_post_meta(get_the_ID(), 'event_button', true );
$event_btn_img = get_post_meta(get_the_ID(), 'event_btn_img', true );
$event_price = get_post_meta(get_the_ID(), 'event_price', true );

$eventlist .= '<li id="event-list-'. get_the_ID() .'" class="' . implode(' ', get_post_class('clearfix')) . '" >'

.'<div class="event-list-date">'
.'<span class="event-list-day">'.date('d' , $fixed_date_day) .'</span>'
.'<span class="event-list-month">'.date('M' , $fixed_date_month) .'</span>'
.'</div>'
.'<div class="event-list-title">' . get_the_title() . '</div>'
.'<div class="event-list-time"><span class="yellow-text">time:</span>'.date('g:i A' , $fixed_time_start) .'</div>'
.'<div class="event-list-artist"><span class="yellow-text">with:</span>'.$event_artist.'</div>'
.'<div class="event-list-location"><span class="yellow-text">location:</span>'.$event_city.', '.$event_state.'</div>'
.'<div class="event-list-link"><a href="'.$event_url.'" target="_blank">more info</a></div>'
.'</li>';

endwhile;
$eventlist .= '</ul>';
endif;
wp_reset_query();

return $eventlist;

}
add_shortcode( 'event', 'event_shortcode' );
// the shortcode -> [event limit="5"]

ok im working on a website using post type event with post_meta event_start_date, i created a shortcode and everything is displaying fine except for it displaying in order, it seems as its not displaying by using meta_key nor meta_value. this the page http://mixedbagnext.com/wordpress/events/ you'll notice the date order is wrong, i want it to display the most recent date first then the other dates following. side note im using more fields plugin to create post_meta and is set to date entered 2015-01-01. here is my code

    // SHORTCODE event
function event_shortcode( $atts ) {
extract( shortcode_atts( array( 'limit' => -1, 'type' => 'event'), $atts ) );   

$eventlist = '';

$paged = get_query_var('paged') ? get_query_var('paged') : 1;  

$carousel_query = new WP_Query(array ( 
    'posts_per_page' => $limit, 
    'post_type' => $type, 
    'post_status'  =>  'publish',
    'order' => 'DESC',
    'orderby' => 'meta_value_num',
    'meta_key' => 'event_start_date',
    'meta_query' => array(
   // 'relation'  =>   'AND',
    array(
            'key' => 'event_start_date',
         'value' => date('Y-m-d', strtotime('-6 hours')), //value of "order-date"
         'compare' => '>=', //show events greater than or equal to today
         'type' => 'CHAR'
        )
    ),
    'paged' => $paged ));

if ($carousel_query->have_posts()) :

$eventlist .= '<ul class="event-list clearfix">';

while ($carousel_query->have_posts()) : $carousel_query->the_post();

$event_artist = wp_strip_all_tags( get_the_term_list( get_the_ID(), 'artist_event', ' ', ' , ', ' ') );

$event_start_date = get_post_meta(get_the_ID(), 'event_start_date', true );
$fixed_date_day = strtotime($event_start_date);
$fixed_date_month = strtotime($event_start_date); 
$event_start_time = get_post_meta(get_the_ID(), 'event_start_time', true );

$fixed_time_start = strtotime($event_start_time); 

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

$fixed_time_end = strtotime($event_end_time); 

$event_location = get_post_meta(get_the_ID(), 'event_location', true );
$event_address = get_post_meta(get_the_ID(), 'event_address', true );
$event_city = get_post_meta(get_the_ID(), 'event_city', true );
$event_state = get_post_meta(get_the_ID(), 'event_state', true );
$event_zipcode = get_post_meta(get_the_ID(), 'event_zipcode', true );
$event_telephone = get_post_meta(get_the_ID(), 'event_telephone', true );
$event_website = get_post_meta(get_the_ID(), 'event_website', true );
$event_description = get_post_meta(get_the_ID(), 'event_description', true );
$event_url = get_post_meta(get_the_ID(), 'event_url', true );
$event_button = get_post_meta(get_the_ID(), 'event_button', true );
$event_btn_img = get_post_meta(get_the_ID(), 'event_btn_img', true );
$event_price = get_post_meta(get_the_ID(), 'event_price', true );

$eventlist .= '<li id="event-list-'. get_the_ID() .'" class="' . implode(' ', get_post_class('clearfix')) . '" >'

.'<div class="event-list-date">'
.'<span class="event-list-day">'.date('d' , $fixed_date_day) .'</span>'
.'<span class="event-list-month">'.date('M' , $fixed_date_month) .'</span>'
.'</div>'
.'<div class="event-list-title">' . get_the_title() . '</div>'
.'<div class="event-list-time"><span class="yellow-text">time:</span>'.date('g:i A' , $fixed_time_start) .'</div>'
.'<div class="event-list-artist"><span class="yellow-text">with:</span>'.$event_artist.'</div>'
.'<div class="event-list-location"><span class="yellow-text">location:</span>'.$event_city.', '.$event_state.'</div>'
.'<div class="event-list-link"><a href="'.$event_url.'" target="_blank">more info</a></div>'
.'</li>';

endwhile;
$eventlist .= '</ul>';
endif;
wp_reset_query();

return $eventlist;

}
add_shortcode( 'event', 'event_shortcode' );
// the shortcode -> [event limit="5"]
Share Improve this question edited Jan 14, 2015 at 21:59 Nicolai Grossherr 18.9k8 gold badges64 silver badges109 bronze badges asked Jan 14, 2015 at 14:38 frenchy blackfrenchy black 1241 silver badge13 bronze badges 2
  • Post your solution as answer to your question - thanks! There is even a badge you can earn for answering your own question. And possibly some reputation too. – Nicolai Grossherr Commented Jan 14, 2015 at 17:36
  • Thank you I appreciate it @ialocin I'm still learning my way around here – frenchy black Commented Jan 14, 2015 at 20:49
Add a comment  | 

1 Answer 1

Reset to default 0

I figured it out. For anyone who needs to find this solution I edited the above code. I changed:

'order' => 'DESC'
to
'order' => 'ASC'
, and
'orderby' => 'meta_value_num'
to
'orderby' => 'meta_value'

to achieve the order I wanted.

转载请注明原文地址:http://conceptsofalgorithm.com/Algorithm/1736257485a442.html

最新回复(0)