在 Woocommerce 之前通过 _sale_price_dates_to 获取产品 ID

Posted

技术标签:

【中文标题】在 Woocommerce 之前通过 _sale_price_dates_to 获取产品 ID【英文标题】:Get products IDs by _sale_price_dates_to before now in Woocommerce 【发布时间】:2018-10-30 14:07:31 【问题描述】:

我尝试从 _sale_price_dates_to 现在较少的 postmeta 获取 post_ids。我做了这样的事情:

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 而不是日期。如何在查询中更改?

但这还没有结束。我想添加产品必须发布然后我必须加入的条件:

$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】:

更新: 在代码中设置right time zone

尝试以下操作,使用WPDB 进行功能性 SQL 查询,以获取 Post 元 _sale_price_dates_to 时间戳小于现在时间戳的 Post ID:

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->prefixposts AS p
    JOIN $wpdb->prefixpostmeta 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 != ''来避免Post ID空值被查询。

【讨论】:

您好,在使用代码几天后,我发现了一个小问题。当 pm.meta_value 的小时是 ie。 05:11:00 和 time() 是 17:05:00 它不起作用。似乎 05 不是凌晨 5 点,但应该是。我有 12 小时轮班。你知道怎么解决吗? 我第一次点击了“接受答案”链接。我是这个网站的新手,也许我做得不对。也许现在 @yoomla 好的,谢谢,你做得很好。我现在刚刚更新了我的代码。您需要在此代码中为date_default_timezone_set('Europe/Paris'); 设置正确的time zone 快一小时了。我为我的城市设置了正确的时区。 LoicTheAztec 你能看一下吗:***.com/questions/53522073/…

以上是关于在 Woocommerce 之前通过 _sale_price_dates_to 获取产品 ID的主要内容,如果未能解决你的问题,请参考以下文章

WooCommerce:仅在列表中显示打折产品

在WooCommerce产品选项编辑页面中,在SKU之前显示自定义字段

php 在Shopkeeper主题中为XL WooCommerce Sales Trigger插件更改WooCommerce单一产品位置

如何在自定义 woocommerce 结帐字段中显示 $_SESSION 变量?

php facetwp woocommerce image + sale html for layout builder

Woocommerce API(Woo Dashboard github)