4

聪明的人,无论如何,至少对我来说可能是一个挑战。

我正在将 Woocommerce 用于电子商务网站,但需要自定义可变产品选项以包含更多与我的产品相关的变体信息。默认情况下,Woocommerce 为您提供以下可变产品选项,SKU,库存数量,常规价格,销售价格,重量,尺寸(长×宽×高),运输等级。你能告诉我如何删除这些选项并添加我自己的吗?我需要诸如构造、最大负载单 (kg)、最大负载双 (kg)、最大速度 (km/h) 之类的选项......我需要这个,所以每个尺寸属性都可以有不同的变量。

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

有任何想法吗?

需要定制的面板图像是

这里

谢谢

4

1 回答 1

0

您将需要挂钩:

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;
}

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

于 2013-10-23T12:06:20.743 回答