是否有允许设置广告资源的挂钩>在全球范围内管理woocommerce中的股票复选框?
我的所有产品都是单品数量,所以看起来非常反D.R.Y总是要记得检查它,特别是对其他员工。
答案 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');