在 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产品选项编辑页面中,在SKU之前显示自定义字段
php 在Shopkeeper主题中为XL WooCommerce Sales Trigger插件更改WooCommerce单一产品位置
如何在自定义 woocommerce 结帐字段中显示 $_SESSION 变量?
php facetwp woocommerce image + sale html for layout builder