2015-02-08 108 views
0

我有一個自定義字段expirydate是由acf作爲日期選擇器...與下面的代碼我試圖刪除帖子tht已過期...由於某些原因代碼不起作用。日期檢查總是返回false

$arg= get_posts(array('post_type' => tokens, 'numberposts' => -1)); 
foreach ($arg as $post) : setup_postdata($post); 
if (!empty($post)) 
    { 
$expiry=get_field('expiry',$post->ID); 
$today=date("d/m/Y"); 
if ($today>$expiry) { 
echo $expiry."expired <br>"; 
wp_delete_post($postid); 
} 
else { 
echo "not expired"."<br>"; 
} 
} 
endforeach; 
echo "process completed"; 
?> 

條件$today>$expiry總是返回false

+0

我會將字符串轉換爲UNIX時間戳並進行比較。您可以使用此功能轉換http://php.net/manual/ru/function.strtotime.php – Tamara 2015-02-08 01:38:18

回答

2

你比較,不日期。因此31/1/2014大於01/12/2014,因爲3> 1時比較字符串

要正確比較日期,請使用可正確比較的字符串格式或使用DateTime()可比較的對象。

$expiry = DateTime::createFromFormat('d/m/y', get_field('expiry',$post->ID)); 
$today = new DateTime(); 
if ($today > $expiry) { 

我建議不要使用strtotime()日期比較,因爲它確實採取夏令考慮。

+0

偉大的建議,不知道。 – FloydThreepwood 2015-02-08 01:46:20

+0

它給了我一個錯誤... PLZ不是使用ACF保存在帖子中的expirydate格式爲「dd/mm/yy」 – user3117694 2015-02-08 01:47:31

+0

可以幫助我http://support.advancedcustomfields.com/forums/topic/list -all-values-in-select-field/ – user3117694 2015-02-08 01:53:34