2016-04-13 4 views
0

Ich bin auf ein Problem fest und dachte, vielleicht fehlt mir etwas Grundlegendes. Ich mache eine Funktion in WordPress, die Beiträge mit einem Veröffentlichungsdatum von weniger als einem Monat von "jetzt" auflistet. Dazu subtrahiere ich 2419200 (30 Tage) von der aktuellen Zeit mit time(). Dann bekomme ich Beiträge, die> 30 Tage her sind. Allerdings interpretiert meine Funktion diesen Bereich falsch und liefert nur Beiträge, die innerhalb von 2 Wochen liegen!Vergleich Post veröffentlichen Datum auf "vor einem Monat" Unix Zeit

Es ist eine Menge los in dieser Funktion zusätzlich zu diesem Problem, also entschuldige ich mich, aber folgen Sie den Variablen $ range, $ limit und $ publish_date für dieses Problem. Beachten Sie, dass ich zu Testzwecken meine Variable beim Start manuell auf "monatlich" gesetzt habe.

function send_archive() { 
$range = 'monthly'; 
$now = time(); 
switch ($range) { 
    case 'monthly' : 
     $limit = ($now - 2419200); // 30 days 
     break; 
    case 'weekly' : 
     $limit = ($now - 604800); 
     break; 
    case 'daily' : 
     $limit = ($now - 86400); 
     break; 
    } 

$post_types = get_post_types(); 
$posts = get_posts(array('post_type' => $post_types)); 
$all_users = get_users(); 
foreach ($all_users as $user) { 
    $excluded = excluded_admin($user->user_login); 
    echo 'excluded is: ' . $excluded . '<br />'; 
    echo 'user_login is: ' . $user->user_login . '<br />'; 
    if ($excluded != 'excluded') { 

     $frequency = get_user_meta($user->ID, 'iw_notify_frequency', true); 
     echo 'frequency is: ' . $frequency . '<br />'; 
     echo 'Range is: ' . $range . '<br />'; 
     echo 'Limit is: ' . date('D, d M Y H:i:s',$limit) . '<br />'; 
     $posts_in_range = ''; 
     $counter = 0; 
     $to = ''; 
     $subject = ''; 
     $headers = ''; 
     if ($frequency == $range) { 
      $posts_in_range = get_option('iw-notify-greeting'); 
      $posts_in_range .= '<p>' . strtoupper($range) . ' digest of posts from the City of Mukilteo</p>'; 
      foreach ($posts as $post) { 
       $published_date = strtotime($post->post_date_gmt); 

       $posts_in_range .= 'published_date: ' . $published_date. '<br />'; 
        $posts_in_range .= 'limit: ' . $limit . '<br />'; 
        $posts_in_range .= 'title: ' . $post->post_title . '<br />'; 
       if ($published_date > $limit) { 
        $match = has_user_selected_terms($user->ID, $post->ID); 
        if ($match != '') { 
         $headers = 'Content-type: text/html;charset=utf-8' . "\r\n"; 
         $posts_in_range .= $post->post_title; 
         $posts_in_range .= ' - published ' . date('M, d', $published_date) . '<br />'; 
         $posts_in_range .= $post->post_excerpt . '<br />'; 
         $posts_in_range .= get_permalink($post->ID); 
         $posts_in_range .= '<br /><br />'; 
         $counter++; 
        } 
       } 
      } 
     } 
     $posts_in_range .= get_option('iw-notify-unsubscribe') . '<br />----<br />'; 
     if ($counter != 0) { 
      $to = $user->user_email; 
      $subject = ucfirst($range) . ' archive from the City of Mukilteo'; 
      $headers = 'Content-type: text/html;charset=utf-8'; 
      $headers .= 'From: ' . get_option('from-name') . '<' . get_option('from-email') . '>' . "\r\n"; 
      $content = $posts_in_range; 
      wp_mail($to, $subject, $content, $headers); 
      echo "Email sent to " . $user->display_name . '<br />'; 
      echo $to . '<br />'; 
      echo $subject .'<br />'; 
      echo $headers . '<br />'; 
      echo $posts_in_range . '<br />'; 
      //echo $user->display_name . '<br />'; 
      //echo $posts_in_range; 
     } 
    } 
} 

}

Antwort

1

Statt alle über Ihre Beiträge gehen Sie

$args = array(
    'date_query' => array(
     array(
      'column' => 'post_date_gmt', 
      'after' => '1 month ago', 
     ) 
    ), 
    'posts_per_page' => -1, 
); 
$query = new WP_Query($args); 
//DO YOUR STUFF WITH THE RESULTS 

Diese Abfrage zurückkehren sollte die Post erstellt im letzten Monat eine Abfrage mit einem Datumsbereich ausgeführt werden.

Weitere Informationen über Date Parameters

+0

Oh wow. Dank dafür. Sehr hilfreich. –