2017-12-04 5 views
0

Ich baue Firma Intranet auf WordPress. Ich versuche, die Liste der bevorstehenden Geburtstage zu erhalten (für die nächsten 30 Tage ab dem aktuellen Tag), der Wert der Geburtstage kommt von einem benutzerdefinierten Feld mit dem Ymd-Format.Abfrage Post basierend auf Monat und Datum

Dieser Code zurückgibt alle Geburtstage:

$args = array(
      'post_type' => 'employees', 
       'meta_key' => 'birthday', 
       'orderby' => 'meta_value_num', 
       'order'  => 'ASC', 
       'compare' => '>=', 
       'type' => 'DATE', 
      ); 

ich nur anstehende Geburtstage für einen Monat Zeit erhalten möchten.

+0

suchen Sie den aktuellen Monat oder die nächsten 30 Tage? – happymacarts

+1

Was hast du probiert? Stellen Sie uns Ihren Code zur Verfügung. Dies ist nur ein Array. – pr1nc3

Antwort

0

Sie müssen Ihre Abfrage basierend auf dem Datum haben, das Sie benötigen. So könnte man so etwas wie:

$start_date = date('Y-m-d', strtotime('- 1 month')); // or $start_date = date('Y-m-d'); 
$end_date = date('Y-m-d', strtotime('+ 1 month')); // or '+ 30 days' for example 

Sie $start_date und $end_date verwenden können, um einen bestimmten Zeitraum in Ihrer Anfrage zu erhalten.

Denken Sie daran, wenn Sie date AND/OR strtotime verwenden, können Sie bis zu irgendwo in 2038 gehen, wenn ich richtig bin. Wenn Sie Daten nach 2038 haben möchten, müssen Sie die new DateTime Funktion verwenden. (http://php.net/manual/en/datetime.construct.php)

+0

Ich habe eine aktuelle Monatslösung gefunden. – Samarkandiy

+0

Schön gefunden! :). Wenn meine Antwort nicht die Antwort auf Ihre Frage ist, können Sie Ihre eigene Antwort hinzufügen und sie innerhalb von 2 Tagen als Antwort markieren. –

0

Ich habe eine aktuelle Monatslösung gefunden.

   $current_month = date('m'); 
       $filter_month = $current_month; // show current month only 

       $args = array (
        'post_type'  => 'employees', // your custom post type 
        'meta_key'  => 'birthday', // your custom date field name 
        'orderby'  => 'meta_value_num', 
        'order'   => 'ASC', 
        'meta_query' => array(
        array(
         'key'  => 'birthday', 
         'compare' => 'REGEXP', 
         'value' => '[0-9]{4}' . $filter_month . '[0-9]{2}', 
        ),  
       ) 
       ); 

       $posts = get_posts($args); 
Verwandte Themen