我试图在woocommerce中安排保存(发布)帖子时的销售期。
我试过下面两种方法,但都不起作用。代码在正确的时间被调用,只是没有更新post meta。
这两种方法都没有更新销售计划。
add_action('save_post_product', array($this, 'knpv_new_product_from_draft'), 10, 2);
add_action('edit_post_product', array($this, 'knpv_new_product_from_draft'), 10, 2);
public function knpv_new_product_from_draft($post_id, $post){
//Get todays date and the date 15 days from now
$datefrom = strtotime(date('Y-m-d'));
$dateto = strtotime(date('Y-m-d', strtotime('+15 days',$datefrom)));
//Method 1
$product = wc_get_product($post_id);
if( !empty(get_post_meta($post_id, '_sale_price', true)) ){
$product->set_date_on_sale_from( $datefrom );
$product->set_date_on_sale_to( $dateto );
}
$product->save();
//Method 2
$var = update_post_meta($post_id, '_sale_price_dates_from', $datefrom);
$var2 = update_post_meta($post_id, '_sale_price_dates_to', $dateto);
}
这不起作用的原因是因为元是在save_post操作完成后更新的。所以我更新了元,然后表单中的空值也更新了它们并清除了它们。
所以我就这样做了。
add_action('save_post_product', array($this, 'knpv_new_product_from_draft'), 10, 2);
add_action('edit_post_product', array($this, 'knpv_new_product_from_draft'), 10, 2);
public function knpv_new_product_from_draft($post_id, $post){
//If the post is being published.
if (get_post_status($post_id) == 'publish') {
//Set the values from the posted form data.
$_POST['_sale_price_dates_from'] = date('Y-m-d');
$_POST['_sale_price_dates_to'] = date('Y-m-d', strtotime($datefrom.' +15 days'));
}
}
您可以使用以下方法之一:
第1条道路-自第3条起:
add_action( 'woocommerce_admin_process_product_object', array($this, 'save_wc_product_meta_data') );
public function save_wc_product_meta_data($product) {
if( isset( $_POST['_sale_price'] ) && $_POST['_sale_price'] >= 0 ){
$product->set_date_on_sale_from( strtotime(date('Y-m-d')));
$product->set_date_on_sale_to( strtotime( date('Y-m-d', strtotime('+15 days'))));
}
}
第二条路-旧路:
add_action( 'woocommerce_process_product_meta', array($this, 'save_wc_product_meta_data') );
public function save_wc_product_meta_data($product_id) {
if( get_post_meta($product_id, '_sale_price', true) >= 0 ){
update_post_meta($product_id, '_sale_price_dates_from', strtotime(date('Y-m-d')));
update_post_meta($product_id, '_sale_price_dates_to', strtotime( date('Y-m-d', strtotime('+15 days'))));
}
}
代码functions.php活动子主题(或活动主题)的文件中。两种方式都有效。
补充:
若要仅在post状态设置为“发布”时才执行此操作,您可以在现有条件下向IF
语句添加以下内容:
&& isset($_POST['post_status']) && $_POST['post_status'] === 'publish'
我有一个Woocommerce商店,里面有各种各样的产品。 我要给所有产品打八折,属于产品类别Cuckoo 现在我所要做的就是在我的functions.php中设定一个销售价格 它的做法如下: 如果我在计算后var_dump$sale_price的结果,我会得到正确的答案,但是前端的价格显示会击出正常价格,并将销售价格显示为正常价格。 是否有一个钩子/过滤器可以用来实现这一点? 我还尝试通过以下方
我正在使用在woocommerce中以编程方式添加产品。除了产品属性外,其他所有功能都正常工作。除非我从管理员处单击“更新”,否则产品页面视图中不会显示产品属性。 我正在添加成吨的产品,所以有没有办法在产品页面的下拉列表中显示变化。 这是我的代码,它工作正常,所有内容都放在正确的字段中,如果不单击“更新”,它就不会在产品页面上显示选项。
在WooCommerce,我试图找到一种方法,如果购物车的重量超过100磅,可以给整个客户的订单打10%的折扣。我正在实现这一目标。对于下一步,我正在寻找一种方法,通过操作/钩子通过functions.php.以编程方式应用优惠券代码 看来我可以使用woocommerce\u ajax\u apply\u优惠券功能来实现这一点(http://docs.woothemes.com/wc-apidoc
问题内容: 我最困难的时间是在WooCommerce中以编程方式创建订单。我正在使用下面的代码,是否正在创建订单,但是我无法获得客户信息或添加到订单的产品线项目。创建的新订单只是访客,没有任何物品,用户信息等。 问题似乎是,一旦创建了订单对象,尝试向订单中添加数据时就会失败。 这是我在日志中遇到的错误: 任何帮助,将不胜感激! 问题答案: 问题出在您的动作挂钩上。使用以下钩子: 确保给定的产品ID
我目前有一个表单,管理员可以在一个屏幕内批量更新产品的销售价格。 提交表格时,我只需使用这样的update_post_meta: 这将更新_sale_price元键。当我进入管理检查这一点,新的销售价格已经插入。当我在前端查看产品时,该产品未标记为正在销售。我必须回去重新保存产品。 我的问题是,伍兹商业是否添加了一些其他meta_key来标记产品在售?我在数据库中为所有插入的自定义字段进行了一次挖
我试图以编程方式批量添加WooCommerce中的产品,但出于某种原因,它只是添加了第一个产品。我正在向一个应用程序发出请求,该应用程序返回带有产品名称和描述的JSON响应。到目前为止,我的代码看起来像下面的代码: