我想添加一個自定義stock_status woocommerce 3.0在wordpress中。添加一個股票期權給Woocommerce 3.0
最終目標是在產品編輯頁面上添加第三個庫存選項「保留」,並在產品頁面上顯示該庫存狀態。
以前我能在這裏使用的方法: Add stock option in woocommerce,它確實工作要額外股票期權增加了產品管理,但它看起來像Woocommerce 3.0也有一些是壓倒一切的實際產品網頁上我的設置。它也在產品頁面上工作,直到我升級到3.0。
我的functions.php:
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'),
'onhold' => __('On Hold', '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');
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);
function woocommerce_get_custom_availability($data, $product) {
switch($product->get_stock_status) {
case 'onhold':
$data = array('availability' => __('On Hold', 'woocommerce'), 'class' => 'on-hold');
break;
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;
}
return $data;
}
add_action('woocommerce_get_availability', 'woocommerce_get_custom_availability', 3, 2);
我可以在數據庫中看到,stock_status正確設置爲「掛起」,我的自定義狀態,當我選擇它的管理,但這並未在實際產品頁面上應用。
爲了驗證,我修改了price.php簡單地輸出庫存狀態:
<p class="price">
<?php
$stockamount = $product->get_stock_quantity();
$price = $product->get_price_html();
$stockstatus = $product->get_stock_status();
$pricelabelone = "Out of Stock";
$pricelabeltwo = "On Hold";
echo $stockstatus;
?>
</p>
然而,即使我設置產品,以「掛起」(這是節約),該產品頁面始終輸出「庫存」(測試產品: http://aegis-staging.byethost7.com/dgh/product/santa-cruz-h13-custom-42-cocobolo-and-moon-spruce/)。
我錯過了什麼?
工作就像一個魅力,謝謝! – Kevin