WooCommerce节目“用于变化”复选框(自定义产品类型)

时间:2017-02-16 19:22:36

标签: javascript php wordpress woocommerce hook-woocommerce

我创建了一个名为vp_extended的自定义变量产品类型。默认情况下,当我添加名为“Size”的属性时,不会在属性下显示“用于变体”的复选框。所以当我添加下面的代码时:

<?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' );  

勾选框正在显示,我可以使用它。问题是当我选择添加另一个属性(例如性别)时,页面加载了一点,然后两个属性都缺少“用于变体”的复选框。

当我检查CSS中的元素时,我可以看到我的类“show_if_vp_extended” 被添加到第一个元素上的“.enable_variation”类中,并且样式说display = block(这里一切都很好)。但是当我将第二个属性添加到产品时,它不会让我的类第一个元素将CSS更改为“display:none”,但仍然使用我的vp扩展类。

我在这里想念或做错了什么?

JavaScript函数在1个属性上运行时的图片: Picture when JavaScript function works on 1 attribute

选择添加1个属性时的图片: Picture when choosing to add 1 more attribute...

1 个答案:

答案 0 :(得分:1)

新添加的属性不在DOM中,因此您的代码不会影响它。我相信每次添加属性时都需要运行代码。

这样的事可能有用:

<div v-for="log in logs">
    <a href="/log/{{log.purchaseId}}">{{log.id}}</a>
</div>

或者从订阅中大量借用,这可能更完整:

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