2017-02-16 47 views
1

我已創建名爲vp_extended的自定義變量產品類型。默認情況下,當我添加名爲「Size」的屬性時,「用於變體」的複選框不顯示在屬性下。所以當我添加下面的代碼:WooCommerce顯示「用於變體」複選框(自定義產品類型)

<?php 
function producttype_custom_js() { 

    if ('product' != get_post_type()) : 
     return; 
    endif; 
?> 
    <script type='text/javascript'> 
     jQuery(document).ready(function($) { 

      $('.enable_variation').addClass('show_if_vp_extended').show(); 

     }); 
    </script> 
<?php 
} 
add_action('admin_footer', 'producttype_custom_js'); 

tickbox顯示,我可以使用它。問題是,當我選擇添加另一個屬性(例如Gender)時,頁面加載了一段時間,然後兩個屬性都缺少「用於變體」的複選框。

當我檢查CSS中的元素,我可以看到我的班「show_if_vp_extended」 添加到「.enable_variation」類第一元素和風格說,顯示=塊(這裏所有的好)。但是,當我將第二個屬性添加到產品時,它不會讓我的類第一個元素將CSS更改爲「display:none」,但仍具有我的vp-extended類。

我在這裏錯過或做錯了什麼?

圖片時JavaScript功能1個屬性:選擇時 Picture when JavaScript function works on 1 attribute

圖片添加1更多的屬性: Picture when choosing to add 1 more attribute...

回答

1

新添加的屬性是不是在DOM使你的代碼不會影響它。我相信每次添加屬性時都需要運行代碼。

像這樣的東西可能會奏效:

$('body').on('woocommerce_added_attribute', function(event){ 
    $('.woocommerce_attribute_data .enable_variation').addClass('show_if_vp_extended').show(); 
}); 

或者從訂閱大量舉債,這可能是更完整:

$('body').on('woocommerce_added_attribute', function(){ 
    if ($('select#product-type').val()=='vp_extended') { 

     $('input#_downloadable').prop('checked', false); 
     $('input#_virtual').removeAttr('checked'); 

     $('.show_if_variable').show(); 
     $('.hide_if_variable').hide(); 
     $('.show_if_vp_extended').show(); 
     $('.hide_if_vp_extended').hide(); 
     $('input#_manage_stock').change(); 

    } 
}); 
+0

標記爲正確。第一個片段是開箱即用的,沒有嘗試過第二個。你是上帝! – Nuc

相關問題