在Woocommerce订购后,产品缺货

时间:2016-01-14 14:24:25

标签: wordpress woocommerce

我对Woocommerce的库存管理有一种非常奇怪的行为。在启用库存管理的产品上,库存100件物品和库存状态"可用",每次订单时,产品库存都会变为负数并且缺货。

例如,如果我订购了2件产品,那么即使库存在100之前,库存也会在订单后立即转到-2。

产品很简单,没有任何属性。我使用以下钩子来改变一些标签和东西,但似乎没有一个与这个问题有关:

add_filter('woocommerce_product_single_add_to_cart_text', array(&$this->wc, 'add_to_cart_text'), 11);
add_filter('woocommerce_add_to_cart', array(&$this->wc, 'add_to_cart'), 10, 1);
add_action('woocommerce_cart_item_removed', array(&$this->wc, 'cart_item_removed'), 10, 1);
add_action('woocommerce_order_status_completed', array(&$this->wc, 'order_status_completed'), 10, 1);
add_action('woocommerce_after_shop_loop_item', array(&$this->wc, 'replace_add_to_cart'));

简而言之,woocommerce_product_single_add_to_cart_text更改了添加到购物车按钮标签,woocommerce_add_to_cart将一些变量放入会话中,woocommerce_cart_item_removed删除了从购物车移除项目的会话变量,woocommerce_order_status_completed使用会话变量做一些事情(从那些会话变量更新CPT - 我根本不接触订单或产品),woocommerce_after_shop_loop_item在产品列表上显示一个按钮。我试图禁用woocommerce_order_status_completed钩子,它没有改变任何东西。

如果您认为某些代码可能与此股票发行相关,我会粘贴这些功能的任何代码。

我使用的是最新版的Woocommerce和Wordpress。

1 个答案:

答案 0 :(得分:1)

我找到了罪魁祸首,因为helgatheviking建议我逐个禁用所有插件,并发现the theme提供的插件 Progression One Click Import 并标记为&#34 ;建议主题使用"这样做。

我的猜测是它与插件代码中的此过滤器有关:

add_filter( 'add_post_metadata', array( $this, 'check_previous_meta' ), 10, 5 );

这是做什么的:

public function check_previous_meta( $continue, $post_id, $meta_key, $meta_value, $unique ) {
    $old_value = get_metadata( 'post', $post_id, $meta_key );
    if ( count( $old_value ) == 1 ) {
        if ( $old_value[0] === $meta_value ) {
            return false;
        } elseif ( $old_value[0] !== $meta_value ) {
            update_post_meta( $post_id, $meta_key, $meta_value );
            return false;
        }
    }
}

这个缺陷是它插入了股票元值raw(-2)而不是减少现有的元值,Woocommerce似乎在他的结尾处使用了一些过滤器 - 这个过滤器已经过了一个行为。

我想这可以通过更改过滤器优先级来解决,但只是禁用该插件对我有好处,因为我不需要导入预览数据。