将Woocommerce作为默认管理库存

时间:2013-04-09 17:22:04

标签: wordpress-plugin woocommerce

是否有允许设置广告资源的挂钩>在全球范围内管理woocommerce中的股票复选框?

我的所有产品都是单品数量,所以看起来非常反D.R.Y总是要记得检查它,特别是对其他员工。

3 个答案:

答案 0 :(得分:7)

虽然这相当晚了,因为你问了一个钩子:虽然它似乎不是一个专门用于打开Manage Stock选项的钩子,动作或功能,你仍然可以挂钩到post保存功能并以这种方式自动启用它,因为它只是一个post_meta值:

add_action('save_post', 'myWoo_savePost', 10, 2);

function myWoo_savePost($postID, $post) {
    if (isset($post->post_type) && $post->post_type == 'product') {

        update_post_meta($post->ID, '_manage_stock', 'yes');
    }
}

请注意,库存水平始终默认为0,因此您可能还需要添加以下行:

update_post_meta($post->ID, '_stock', '1');

...会将您的库存数量更新为1.请注意,每次保存产品时都会发生

我不确定这是否会在WooCommerce的其他地方产生更大的库存数量的连锁反应,但是当您处理单件数量的物品时,我猜你是否会这样做?可能还好。

更新(使用$ update):

自Wordpress 3.7起,第三个参数已添加到save_post,因此您可以轻松判断是创建新帖子还是更新现有帖子。因此,您可以在创建新帖子时激活上面的函数(这可以说是期望的效果):

add_action('save_post_product', 'myWoo_savePost', 10, 3);

function myWoo_savePost($postID, $post, $update) {
    if (!$update) {
        //  $update is false if we're creating a new post
        update_post_meta($post->ID, '_manage_stock', 'yes');
        update_post_meta($post->ID, '_stock', '1');
    }
}

(感谢Dylan提供有关后期类型特定保存的提醒)

答案 1 :(得分:2)

有点晚了,但这是其他人需要这样做的方法......我在其他地方发现了大部分代码,但是我找不到它的链接了。稍微调整一下,这就是我最终的结果(添加到functions.php):

add_action( 'admin_enqueue_scripts', 'wc_default_variation_stock_quantity' );
function wc_default_variation_stock_quantity() {
  global $pagenow, $woocommerce;

  $default_stock_quantity = 1;
  $screen = get_current_screen();

  if ( ( $pagenow == 'post-new.php' || $pagenow == 'post.php' || $pagenow == 'edit.php' ) && $screen->post_type == 'product' ) {

    ?>
<!-- uncomment this if jquery if it hasn't been included
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
-->
    <script type="text/javascript">
    jQuery(document).ready(function(){
        if ( !jQuery( '#_manage_stock' ).attr('checked') ) {
          jQuery( '#_manage_stock' ).attr('checked', 'checked');
        }
        if ( '' === jQuery( '#_stock' ).val() ) {
          jQuery( '#_stock' ).val(<?php echo $default_stock_quantity; ?>);
        }
    });
    </script>
    <?php
  }
}

答案 2 :(得分:0)

Woocommerce现在拥有自己的保存产品的钩子。对于一个简单的产品,woocommerce_process_product_meta_simple

在更新元数据之前,我们应首先检查_manage_stock是否为空,即未选中复选框,以便仅在尚未设置的产品上触发。

然后切换管理库存并设置默认库存编号。

function manage_stock_default( $post_id ) {
    if (empty($_POST['_manage_stock'])) {
      update_post_meta($post_id, '_manage_stock', 'yes');
      update_post_meta($post_id, '_stock', '1');
    }
}
add_action( 'woocommerce_process_product_meta_simple', 'manage_stock_default');