我尝试从postmeta获取post_id,其中_sale_price_dates_to小于现在。我做了这样的事情:
global $wpdb;
$publishid = $wpdb->get_results('SELECT meta_value FROM ' . $wpdb->postmeta . ' WHERE meta_key="_sale_price_dates_to" and meta_value<=' .time().'') or die("Error: Cannot create object");
但是它不起作用。可能是因为_sale_price_dates_to的格式为长文本而不是日期。如何在查询中更改它?
但是还没有结束。我要添加必须发布产品的条件,然后我必须加入:
$publishid = $wpdb->get_results('SELECT meta_value FROM ' . $wpdb->postmeta . 'join' . $wpdb->posts . ' ON wp_posts.ID = wp_postmeta.post_id WHERE wp_postmeta.meta_key="_sale_price_dates_to" and wp_postmeta.meta_value<=' .time().' and wp_posts.post_status="publish" ') or die("Error: Cannot create object");
但是由于第一个问题,我不知道它有用。
答案 0 :(得分:0)
更新:在代码中设置right time zone
尝试以下操作,使用WPDB
进行功能性SQL查询,以获取帖子ID,其中帖子元_sale_price_dates_to
时间戳比现在的时间戳要短:
global $wpdb;
// Set the correct time zone (http://php.net/manual/en/timezones.php)
date_default_timezone_set('Europe/Paris');
// An array of IDs
$results = $wpdb->get_col("
SELECT p.ID
FROM {$wpdb->prefix}posts AS p
JOIN {$wpdb->prefix}postmeta AS pm ON p.ID = pm.post_id
WHERE p.post_status = 'publish'
AND pm.meta_key = '_sale_price_dates_to'
AND pm.meta_value <= '".time()."'
AND pm.meta_value != ''
");
// Raw Output (array of post IDs)
print_r($results);
经过测试可以正常工作。
meta_value != ''
可以避免查询具有空值的帖子ID。