2011-03-25 92 views
0

我有一个名为日期&我需要查询所有记录,其中该时间戳等于或小于今天的荟萃场...WordPress的自定义查询字符串

<?php 

$time = time(); 
$querystr = " 
    SELECT wposts.* 
    FROM $wpdb->posts wposts, $wpdb->postmeta wpostmeta 
    WHERE wpostmeta.meta_key = 'date' 
    AND wpostmeta.meta_value <= $time 
"; 
$pageposts = $wpdb->get_results($querystr, OBJECT); 
?> 
+0

我认为这是全球范围,而不是一个函数? – 2011-03-25 15:26:24

回答

0

你可以尝试这样的事:

$today = date('Y-m-d'); 

$querystr = " 
    SELECT * 
    FROM wp_posts, wp_postmeta 
    WHERE wp_posts.ID = wp_postmeta.post_id 
    AND wp_postmeta.meta_key = 'date' 
    AND wp_posts.post_status = 'publish' 
    AND wp_posts.post_type = 'post' 
    AND STR_TO_DATE(wp_postmeta.meta_value, '%Y/%m/%d') <= '$today' 
    ORDER BY STR_TO_DATE(wp_postmeta.meta_value, '%Y/%m/%d') ASC 
"; 

$custom_loop = $wpdb->get_results($querystr, OBJECT); 

在que查询的最后两行中,您必须指定日期格式(在您的自定义字段“date”中)。例如,如果您的自定义“日期”字段有DD/MM/YYYY格式,你可以使用:

AND STR_TO_DATE(wp_postmeta.meta_value, '%d/%m/%Y') <= '$today' 
ORDER BY STR_TO_DATE(wp_postmeta.meta_value, '%d/%m/%Y') ASC 

$today日期Y-m-d,因为它是默认的时间格式,用于由MySQL的比较。