提问者:小点点

WooCommerce-自定义可变产品选项


聪明人,我有可能是一个挑战,至少对我来说是这样。

我正在使用Woocommerce的电子商务网站,但需要自定义可变产品选项,以包括我的产品更相关的变化信息。默认情况下,Woocommerce为您提供以下可变产品选项:SKU、库存数量、常规价格、销售价格、重量、尺寸(长×宽×高)、装运类别。您能告诉我如何删除这些选项并添加我自己的选项吗。我需要的选项,如建设,最大负荷单(公斤),最大负荷双(公斤),最大速度(公里/小时)。。。。我需要这个,这样每个大小属性都可以有不同的变量。

将自定义字段添加到选项卡后,我还需要它们显示在前端附加信息选项卡上。

有什么想法吗?

需要定制的面板图像是

谢谢


共1个答案

匿名用户

您将需要钩入:

woocommerce_process_product_meta_variable

所以像这样的东西会起作用:

add_action( 'woocommerce_process_product_meta_variable', 'new_custom_field_here', 10, 1 );

function new_custom_field_here( $loop, $variation_data ) { ?>

      <label>New Field</label>
      <input name="new_field_[<?php echo $loop; ?>]" value="<?php echo $variation_data['_new_field'][0]; ?>"/>
    
<?php }

这将创造一个新的领域。然后,您需要保存此数据:

add_action( 'woocommerce_process_product_meta_variable', 'save_new_custom_field', 10, 1 );

function save_new_custom_field( $post_id ) {
if (isset( $_POST['variable_sku'] ) ) :
    $variable_sku = $_POST['variable_sku'];
    $variable_post_id = $_POST['variable_post_id'];

    $new_field = $_POST['new_field'];
    
    for ( $i = 0; $i < sizeof( $variable_sku ); $i++ ) :
        $variation_id = (int) $variable_post_id[$i];
        if ( isset( $new_field [$i] ) ) {
            update_post_meta( $variation_id, '_new_field', stripslashes( $new_field [$i] ) );
            update_post_meta( $variation_id, '_parent_product', $post_id );

        }
        
    endfor;

endif;
}

我希望这能让你走上正轨!