为所有WooCommerce新产品设置特定的默认库存数量

时间:2019-09-06 作者:Carlos Rodríguez

Context:

我正在打造一个WooCommerce/Dokan市场,供人们出售二手产品。由于这是二手产品,每个产品的库存应该只有1件。所有产品都是简单的产品,没有变化。

Problem

我想将所有产品的库存默认设置为1。我不希望用户自行设置库存数量。

What I\'ve tried

  • 我做了很多研究,还没有找到解决方案,我在网上看到了这个教程:
    Set a Default Stock Quantity for WooCommerce Products这就是我要找的,但是,代码不再工作了,产生了臭名昭著的白色死亡屏幕。
  • 我找到了一些代码添加到我的子主题函数中。php在产品页面中将数量值设置为1,它可以工作,但它不是一个完整的解决方案,因为如果有人购买产品,库存不会减少到零,产品也不会隐藏在前端

What I would like to have

理想的解决方案是将代码添加到我的子主题函数中。在所有新发布的产品中,默认情况下将库存数量设置为1的php。当然,我对其他解决方案和插件持开放态度,但主要目标是将此数量自动设置为所有新产品。

Notes

<我不是一个有经验的开发人员,我是一个自我思考的设计师,这就是我寻求帮助的原因
2 个回复
SO网友:LoicTheAztec

对于admin上的“新”简单产品,以下嵌入式jQuery脚本将:

触发并启用产品级的“库存管理”,将“库存数量”设置为“1”,将“低库存阈值”设置为“0”代码:

add_action( \'admin_footer\', \'new_product_stock_default_setting\' );
function new_product_stock_default_setting() {
    global $pagenow, $post_type;

    // Targeting new product page (admin)
    if( $pagenow === \'post-new.php\' && $post_type === \'product\' ) :
    ?>
    <script>
    jQuery(function($){
        var a = \'#inventory_product_data input#\';

        // Set Manage Stock and trigger event to show other related fields
        $(a+\'_manage_stock\').prop(\'checked\', true).change();
        $(a+\'_stock\').val(\'1\'); // Set Stock quantity to "1"
        $(a+\'_low_stock_amount\').val(\'0\'); // Set Low stock threshold to "0"
    });
    </script>
    <?php
    endif;
}
代码进入函数。活动子主题(或活动主题)的php文件。已测试并正常工作。

enter image description here

SO网友:Antti Koskinen

我相信在WooC中,产品库存数据保存为post meta,键为_stock. 如果是这种情况,那么您可以通过将自定义函数挂接到save_post 行动

在自定义函数中,您需要检查您正在处理的新帖子和正确的帖子类型。这将覆盖任何用户提交的库存水平数据。

function save_product_meta( $post_id, $post, $update ) {
  // only new products
  if ( ! $update && \'product\' === $post->post_type ) {
    update_post_meta( $post_id, \'_stock\', 1 ); // stock count
    update_post_meta( $post_id, \'_stock_status\', \'instock\' ); // stock status
  }
}
add_action( \'save_post\', \'save_product_meta\', 10, 3 );
在生产站点中使用之前,请测试并调整上述示例,以满足您在开发环境中的需要。

EDIT

您还可以使用特定于CPT的保存操作,

function save_product_meta( $post_id, $post, $update ) {
  // only new products
  if ( ! $update ) {
    update_post_meta( $post_id, \'_stock\', 1 ); // stock count
    update_post_meta( $post_id, \'_stock_status\', \'instock\' ); // stock status
  }
}
add_action( \'save_post_product\', \'save_product_meta\', 10, 3 );

相关推荐

使用jQuery插入不适用于音频文件的帖子

我正在尝试将媒体库中的音频url插入到自定义元数据库中的字段中。我使用jQuery做了一个类似的操作,但取而代之的是抓取一个图像url,这非常有效。但由于某些原因,在尝试获取音频url时,它不起作用。以下是我的自定义元数据库中的字段,下面是我尝试使用的jQuery:Metabox Code <tr> <th>MP4 File Location:</th> <td><input type=\"text\"