wp_delete_post löscht alle Posts anstatt nur die abgelaufenen Posts

Ich versuche, einen Cron-Job einzurichten, der Beiträge löscht, die ihr Verfallsdatum überschritten haben (dh Ablaufdatum <heutiges Datum). Ich habe ein Meta-Feld für den benutzerdefinierten Beitragstyp, der dem Beitrag ein Ablaufdatum hinzufügt.

Ich habe den Cron-Job eingerichtet, um die wp_delete_post stündlich auszulösen. Anstatt jedoch nur die Posts zu löschen, die das Ablaufdatum überschritten haben, löscht es ALLE Posts im benutzerdefinierten Post-Typ.

Kann jemand sehen, wo das Problem ist? Vielen Dank

add_action( 'wp', 'delete_expired_adverts_daily' ); function delete_expired_adverts_daily() { if ( ! wp_next_scheduled( 'delete_expired_adverts' ) ) { wp_schedule_event( time(), 'hourly', 'delete_expired_adverts'); } } add_action( 'delete_expired_adverts', 'delete_expired_adverts_callback' ); function delete_expired_adverts_callback() { $args = array( 'post_type' => 'advert', 'posts_per_page' => -1 ); $query_ads = new WP_Query($args); if ($query_ads->have_posts()): while($query_ads->have_posts()): $query_ads->the_post(); $expiry_date = get_post_meta( $post_id, 'expires', true); $today = date('dm-Y'); $today_split = strtotime($today); $expiry_split = strtotime($expiry_date); if ($expiry_split < $today_split) { wp_delete_post(get_the_ID()); //Use wp_delete_post(get_the_ID(),true) to delete the post from the trash too. } endwhile; endif; } 

Solutions Collecting From Web of "wp_delete_post löscht alle Posts anstatt nur die abgelaufenen Posts"

Falls jemand den Code benötigt, habe ich ihn so getriggers. @ pieter-goosen hatte Recht, ich musste die richtigen Posts abfragen, aber der wahre Trick war, das Datumsformat vom jquery datepicker zu vergleichen, wenn ich die Post-Abfrage ausführte. Überprüfen Sie die Datumsformate unten, jquery ist “yy-mm-dd” und das PHP-Äquivalent ist “Ym-d”.

Die js für den Datepicker war also:

  

Und die Cron-function war:

 add_action( 'wp', 'delete_expired_adverts_daily' ); function delete_expired_adverts_daily() { if ( ! wp_next_scheduled( 'delete_expired_adverts' ) ) { wp_schedule_event( time(), 'daily', 'delete_expired_adverts'); } } add_action( 'delete_expired_adverts', 'delete_expired_adverts_callback' ); function delete_expired_adverts_callback() { $args = array ( 'post_type' => 'advert', 'meta_key' => 'expires', 'meta_value' => date('Ym-d'), 'meta_compare' => '< =', ); $query_ads = new WP_Query($args); if ($query_ads->have_posts()): while($query_ads->have_posts()): $query_ads->the_post(); wp_delete_post(get_the_ID(), true); endwhile; endif; }