2017-10-14 4 views
0

私は、カスタムストック・オプションを作成するために、これらの投稿(12)からコードを使用:カスタム(Woocommerce 3.2.1)

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'), 
    '1to3' => __('Διαθέσιμο! Παράδοση σε: 1-3 ημέρες', 'woocommerce'), 
    '3to5' => __('Διαθέσιμο! Παράδοση σε: 3-5 ημέρες', 'woocommerce'), 
    '7to10' => __('Διαθέσιμο! Παράδοση σε: 7-10 ημέρες', 'woocommerce'), 
    'onrequest' => __('Διαθέσιμο κατόπιν παραγγελίας', '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) { 
$stock_status = get_post_meta($product->id , '_stock_status' , true); 
switch($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 '1to3': 
     $data = array('availability' => __('Διαθέσιμο! Παράδοση σε: 1-3 
ημέρες', 'woocommerce'), 'class' => '1to3'); 
    break; 
    case '3to5': 
     $data = array('availability' => __('Διαθέσιμο! Παράδοση σε: 3-5 
ημέρες', 'woocommerce'), 'class' => '3to5'); 
    break; 
    case '7to10': 
     $data = array('availability' => __('Διαθέσιμο! Παράδοση σε: 7-10 
ημέρες', 'woocommerce'), 'class' => '7to10'); 
    break; 
    case 'onrequest': 
     $data = array('availability' => __('Διαθέσιμο κατόπιν 
παραγγελίας', 'woocommerce'), 'class' => 'on-request'); 
    break; 
} 
return $data; 
} 
add_action('woocommerce_get_availability', 
'woocommerce_get_custom_availability', 10, 2); 

新しいストック・オプションが表示さ1つの商品編集ページで正しく表示されますが、一部の商品を一括編集しようとすると表示されません。 「在庫あり」オプションと「在庫切れ」オプションのみが表示されます。

製品ページ: Product page

一括編集: Bulk Edit

がどのように私は新しいカスタムストックオプションの製品を編集する一括することができますか?製品を1つずつ編集するのはちょっとイライラします。

答えて

0

はい、これを実行している可能性があります。例のカスタムフィールドを保存するためのコードは以下のとおりです。

/** 
* Add a custom column to WooCommerce products quick edit. 
* 
*/ 
function es_display_custom_quickedit_product() { 
    ?> 
    <br class="clear" /> 
    <h4>Custom Fields</h4> 
    <label> 
     <span class="title"><?php _e('Member Price', 'woocommerce'); ?></span> 
     <span class="input-text-wrap"> 
      <input type="text" name="member_price" class="text wc_input_price" value=""> 
     </span> 
    </label> 
    <br class="clear" /> 
    <?php 
} 

add_action('woocommerce_product_quick_edit_end', 'es_display_custom_quickedit_product'); 

/** 
* Save the quick edit custom WooCommerce fields 
* 
*/ 
function es_save_custom_quickedit_product($product) { 
    if (isset($_REQUEST['member_price']) AND ! empty($_REQUEST['member_price'])) { 
     update_post_meta($product->id, 'member_price', wc_clean($_REQUEST['member_price'])); 
    } 
    else 
     delete_post_meta($product->id, 'member_price'); 
} 

add_action('woocommerce_product_quick_edit_save', 'es_save_custom_quickedit_product'); 
+0

このコードでは、単一の製品のクイック編集でカスタム編集オプションが追加されています。私は一括して5-6個の製品を一括して編集したいが、前に入れたカスタムストックオプションは存在しない。それらは単一の製品編集ページにのみ存在します。 –

関連する問題