dimanche 29 septembre 2019

Order posts from the smallest to the largest within an if loop

I am making an event booking, obviously the events can be different and so I created taxonomies to associate the events with the latter.

Being events as properties of the post they have enclosed within a meta_value that corresponds to the meta key:metakey_AMC_data the date of the event.

It made me a little mad to order the events from the smallest to the largest on the taxonomy page but in the end I did it.

$v_args = array(
    'post_type'     =>  array('eventi-suite'), // your CPT
    'posts_per_page'    => -1,
    'orderby' => 'metakey_AMC_data',
    'meta_query' => array(
        array
        (
            'key'     => 'metakey_AMC_data',
            'compare'   => '>=',
        ),
    ),
    'tax_query' => array(
        array(
            'taxonomy' => 'categoria',
            'field' => 'slug',
            'terms' => 'aperitivi'
        )
    )

);
$vehicleSearchQuery = new WP_Query( $v_args );

// Open this line to Debug what's query WP has just run
//print_r($vehicleSearchQuery->request);

// Show the results
if( $vehicleSearchQuery->have_posts() ) :
    while( $vehicleSearchQuery->have_posts() ) : $vehicleSearchQuery->the_post();
        ?>
        <?php
        /*CONVERTIRE LA DATA DEGLI EVENTI SALVATA NEL DB DA DD-MM-YY A Y-M-D*/
        $var = get_post_meta(get_the_ID(),'metakey_AMC_data',true);
        $date = str_replace('/', '-', $var);
        $data_eventi = date('Y-m-d', strtotime($date));

        /*PRENDERE LA DATA CORRENTE IN FORMATO Y-m-d DIRETTAMENTE DA MYSQL*/
        $data_mysql = date( 'Y-m-d', current_time( 'timestamp', 0 ) );

        if ($data_eventi <= $data_mysql): ?>
        <!-- NON MOSTRARE NULLA -->
        <?php else: ?>
            <div style="padding-top: 25px;" class="col-md-4"><!-- Card -->
                <?php include('content/home_page/card.php');  ?>
            </div>
        <?php endif; ?>

        <?php
    endwhile;
else :
    ?><div style="text-align: center;padding-top: 25px;" class="col-md-12"><?php
    _e( 'Ci dispiace, non abbiamo nessun evento da proporti nella data che hai immesso. <br> Prova con un altra data.', 'textdomain' );
    ?></div><?php
endif;
wp_reset_postdata();
?>

after performing the conversion of the date in the form of a string inside the db, and taking the current date mysql, I implemented an if loop, where I tell it that if the event is less than the current date it should not be shown if it is greater it must to be shown.

Where's my problem?

The fact is that I have 4 events with different dates:

  • 09/30/2019
  • 09/30/2019
  • 10/08/2019
  • 10/10/2019

that should come out in this order, instead they come out in this other

  • 09/30/2019
  • 09/30/2019
  • 10/10/2019
  • 10/08/2019

how do I place a sort from the smallest to the largest within my if loop, to solve this?

Aucun commentaire:

Enregistrer un commentaire