Получить идентификаторы продуктов по _sale_price_dates_to до сих пор в Woocommerce - PullRequest
0 голосов
/ 30 октября 2018

Я пытаюсь получить post_ids от postmeta, где _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 имеет формат longtext, а не date. как это изменить в запросе?

Но это еще не конец. Я хочу добавить условие, что продукты должны быть опубликованы, тогда я должен присоединиться:

$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");

Но из-за первой проблемы я не знаю, как это работает.

1 Ответ

0 голосов
/ 30 октября 2018

Обновление: Настройка правильного часового пояса в коде

Попробуйте сделать следующий функциональный запрос SQL, используя WPDB, чтобы получить идентификаторы постов, где мета времени публикации _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 != '' необходимо, чтобы избежать запроса идентификаторов записей с пустыми значениями.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...