cho bất kỳ ai quan tâm, đây là giải pháp hoàn chỉnh, dựa trên phương pháp tiếp cận của Laila. Cảnh báo! Giải pháp của tôi chỉ nhằm mục đích làm việc với tùy chọn WooCommerce "quản lý cổ phiếu" bị vô hiệu hóa! Tôi không làm việc với số tiền chính xác của các mặt hàng trong kho. Tất cả mã đều đi đến functions.php
, như thường lệ.
Phần sau
Xóa trường thả xuống trạng thái chứng khoán gốc. Thêm lớp CSS để phân biệt trường tùy chỉnh mới của tôi. Dropdown hiện có tùy chọn mới "On Request".
function add_custom_stock_type() {
?>
<script type="text/javascript">
jQuery(function(){
jQuery('._stock_status_field').not('.custom-stock-status').remove();
});
</script>
<?php
woocommerce_wp_select(array('id' => '_stock_status', 'wrapper_class' => 'hide_if_variable custom-stock-status', 'label' => __('Stock status', 'woocommerce'), 'options' => array(
'instock' => __('In stock', 'woocommerce'),
'outofstock' => __('Out of stock', 'woocommerce'),
'onrequest' => __('On Request', 'woocommerce'), // The new option !!!
), 'desc_tip' => true, 'description' => __('Controls whether or not the product is listed as "in stock" or "out of stock" on the frontend.', 'woocommerce')));
}
add_action('woocommerce_product_options_stock_status', 'add_custom_stock_type');
Đáng buồn thay, WooCommerce sẽ tiết kiệm chỉ "instock" hoặc "outofstock" giá trị với các chức năng có nguồn gốc của nó. Vì vậy, sau khi xử lý tất cả dữ liệu sản phẩm, tôi phải lưu lại trạng thái chứng khoán của mình.
function save_custom_stock_status($product_id) {
update_post_meta($product_id, '_stock_status', wc_clean($_POST['_stock_status']));
}
add_action('woocommerce_process_product_meta', 'save_custom_stock_status',99,1);
Template phần
Và điều cuối cùng - tôi phải thay đổi dữ liệu trả về bởi sản phẩm get_availability()
chức năng. Khi "quản lý kho" bị tắt, WooCommerce chỉ biết giá trị "instock" và "outofstock", một lần nữa. Vì vậy, tôi có kiểm tra tình trạng cổ phiếu của riêng tôi.
function woocommerce_get_custom_availability($data, $product) {
switch($product->stock_status) {
case 'instock':
$data = array('availability' => __('In stock', 'woocommerce'), 'class' => 'in-stock');
break;
case 'outofstock':
$data = array('availability' => __('Out of stock', 'woocommerce'), 'class' => 'out-of-stock');
break;
case 'onrequest':
$data = array('availability' => __('On request', 'woocommerce'), 'class' => 'on-request');
break;
}
return $data;
}
add_action('woocommerce_get_availability', 'woocommerce_get_custom_availability', 10, 2);
Có thể nó không phải là giải pháp chống đạn ... Tôi sẽ cập nhật nó, cuối cùng.
Xin lỗi nhưng những gì bạn đang tìm kiếm là không thể mà không thay đổi các tệp lõi, những thay đổi sẽ bị mất khi nâng cấp. https://support.woothemes.com/hc/communities/public/questions/202868126-Adding-a-stock-choice –
Tôi đã nhìn thấy liên kết này nhưng tôi đã tự hỏi nếu có một giải pháp khác. Bạn có thể kiểm tra câu trả lời của riêng tôi dưới đây. – Laila