我希望在woocommerce eshop中对在2016年之后发布的特定产品提供11%的折扣。
此字段(pub_year)是wpdb中名称为$book->author()->count()
的自定义表中的自定义字段。
我尝试了一些代码(这是我所做研究的混合代码),但没有成功。
我尝试过的代码:
fancyplugin_wc_product_info
答案 0 :(得分:0)
如果我是您,我将执行一个程序来更新每个在2016年之后发布的注册簿,直到最终日期范围,因为如果您仅从2016年开始使用它,则会更新所有产品。
例如:从2016年到2017年。
为什么我要构建一个过程,而不只是在数据库中执行更新?
也许将来,您需要执行相同的操作,然后您已经具有执行此操作的过程。
为了安全起见,您可以创建一个备份表,以保存旧价格的产品和新价格。因为如果您需要在价格上进行回滚,那么就可以找到它!
答案 1 :(得分:0)
您使用WPDB类的SQL查询不完整且错误……由于表wp_fancyplugin_wc_product_info
中产品ID的列为post_id
,因此您需要为其查询当前产品ID……请尝试以下操作:
function process_sale_price( $price ) {
$percentage = 11; // 11% discount
return ( 100 - $percentage ) / 100 * $price;
}
add_filter('woocommerce_product_get_price', 'custom_price', 99, 2 );
add_filter('woocommerce_product_get_sale_price', 'custom_price', 99, 2 );
function custom_price( $price, $product ) {
global $wpdb;
$result = $wpdb->get_var( $wpdb->prepare("
SELECT post_id FROM {$wpdb->prefix}fancyplugin_wc_product_info
WHERE pub_year >= '2016' AND post_id = %d
", $product->get_id() ) );
if( ! empty($result) ) {
return process_sale_price( $price );
}
return $price;
}
代码进入活动子主题(或活动主题)的functions.php文件中。应该可以。