2016-07-26 9 views
0

Ich versuche, einen Cron-Job für eine benutzerdefinierte Beitragstyp (Job Listings), die zwei ACF benutzerdefinierte Felder enthält, einzurichten.Benutzerdefiniertes Feld mit Cron-Job in WordPress aktualisieren

  1. Datumsauswahl - Benutzer können wählen, den Jobs (‚job_listing_closing_date‘)
  2. Funkfeldschluss - Offen & geschlossen Entscheidungen. (‚Job_listing_status‘)

Ich brauche das Funkfeld von ‚Open‘ zu ‚Geschlossen‘ im Backend-Post-Bearbeitungsbildschirm zu ändern, wenn die job_listing_closing_date bestanden hat. Hier ist mein Code im Moment, der sich in der Datei '/wp-content/themes/themename/assets/functions/cpt-job-listings.php befindet.

Ich habe die folgenden Code auf der Website hinzugefügt, aber nichts passiert. Vielleicht ist die Abfrage falsch oder die ACF-Felder sind in der Datei, in der ich codiert habe, nicht verfügbar?

// Create a cron job in order to check the custom field of 'job_listing_closing_date' against today's date. If the date has passed, set the job status to 'closed' and display different content on front-end. 

// Scheduled Action Hook 
function check_job_end_date() { 

    // WP_Query arguments 
    $listings = array (
     'post_type'    => 'job_listings', 
     'posts_per_page'   => -1, 
     'meta_key'    => 'job_listing_closing_date', 
     'meta_query' => array(
      'key'  => 'job_listing_closing_date',  
      'value' => date('Ymd'), 
      'compare' => '<', 
      'type' => 'NUMERIC', 
     ) 
    ); 

    global $post; 
    if ($listings->have_posts()) { 
    while ($listings->have_post()) { 
     $listings->the_post(); 
     update_field('job_listing_job_status', 'Closed'); 
     //update_post_meta($post->ID, 'job_listing_job_status', 'Closed'); 
    } 
    wp_reset_postdata(); 
    } 
} 

// Schedule Cron Job Event 
function job_listing_cron_job() { 
    if (! wp_next_scheduled('check_job_end_date')) { 
     wp_schedule_event(date('Ymd'), 'daily', 'check_job_end_date'); 
    } 
} 

Antwort

0

Versuchen Sie folgendes:

$listings = array (
    'post_type'    => 'job_listings', 
    'posts_per_page'   => -1, 
    'meta_key'    => 'job_listing_closing_date', 
    'meta_query' => array(
     'key'  => 'job_listing_closing_date',  
     'value' => date('Ymd'), 
     'compare' => '<', 
     'type' => 'DATE', 
    ) 
); 

Und sicher ist die richtige Datumsformat date('Ymd')

+0

Getestet mit DATE auch und überprüft, dass die Datumsformate übereinstimmen. Ich habe auch eine benutzerdefinierte Seite Vorlage erstellt und diese WP_Query ausführen, um zu sehen, ob es die richtigen Details echo'd, was es tut. –

0

ich die meisten der Code Umschreiben beendet und das ist, was funktioniert hat:

// Create a cron job in order to check the custom field of 'job_listing_closing_date' against today's date. If the date has passed, set the job status to 'closed' and display different content on front-end. 

// Scheduled Action Hook 
function check_job_end_date() { 

    global $post; 

    $args = array( 
    'post_type'  => 'job_listings', 
    'posts_per_page' => -1, 
); 

    $listings = get_posts($args); 
    foreach($listings as $post) : setup_postdata($post); 

    $today = date('Ymd'); 
    $expire = get_field('job_listing_closing_date', false, false); 
    $status = get_field('job_listing_job_status'); 
     if ($expire < $today) : 
      $status = 'Closed'; 
      update_field('job_listing_job_status', $status); 
     endif; 
    endforeach; 

} 

// Schedule Cron Job Event 

if (! wp_next_scheduled('job_listing_cron_job')) { 
    wp_schedule_event(date('Ymd'), 'daily', 'job_listing_cron_job'); 
} 
add_action('job_listing_cron_job', 'check_job_end_date'); 
Verwandte Themen