【发布时间】:2017-12-05 05:41:10
【问题描述】:
目前我在产品单页中创建一个表格,以便客户可以输入产品的高度和宽度。因此产品价格会根据输入的高度和宽度而有所不同。
我在
中创建了这个表格woocommerce->单一产品->添加到购物车->simple.php
修改前的形式是
<form class="cart" method="post" enctype='multipart/form-data'>
<?php
/**
* @since 2.1.0.
*/
do_action( 'woocommerce_before_add_to_cart_button' );
/**
* @since 3.0.0.
*/
do_action( 'woocommerce_before_add_to_cart_quantity' );
woocommerce_quantity_input( array(
'min_value' => apply_filters( 'woocommerce_quantity_input_min', $product->get_min_purchase_quantity(), $product ),
'max_value' => apply_filters( 'woocommerce_quantity_input_max', $product->get_max_purchase_quantity(), $product ),
'input_value' => isset( $_POST['quantity'] ) ? wc_stock_amount( $_POST['quantity'] ) : $product->get_min_purchase_quantity(),
) );
/**
* @since 3.0.0.
*/
do_action( 'woocommerce_after_add_to_cart_quantity' );
?>
<button type="submit" name="add-to-cart" value="<?php echo esc_attr( $product->get_id() ); ?>" class="single_add_to_cart_button button alt"><?php echo esc_html( $product->single_add_to_cart_text() ); ?></button>
<?php
/**
* @since 2.1.0.
*/
do_action( 'woocommerce_after_add_to_cart_button' );
?>
</form>
修改后的表格是
<form class="cart" method="post" enctype='multipart/form-data'>
<p>width <input type="text" name="new-width" class="new-width"></p>
<p>Height <input type="text" name="new-height" class="new-height"></p>
<?php
/**
* @since 2.1.0.
*/
do_action( 'woocommerce_before_add_to_cart_button' );
/**
* @since 3.0.0.
*/
do_action( 'woocommerce_before_add_to_cart_quantity' );
woocommerce_quantity_input( array(
'min_value' => apply_filters( 'woocommerce_quantity_input_min', $product->get_min_purchase_quantity(), $product ),
'max_value' => apply_filters( 'woocommerce_quantity_input_max', $product->get_max_purchase_quantity(), $product ),
'input_value' => isset( $_POST['quantity'] ) ? wc_stock_amount( $_POST['quantity'] ) : $product->get_min_purchase_quantity(),
) );
/**
* @since 3.0.0.
*/
do_action( 'woocommerce_after_add_to_cart_quantity' );
?>
<button type="submit" name="add-to-cart" value="<?php echo esc_attr( $product->get_id() ); ?>" class="single_add_to_cart_button button alt"><?php echo esc_html( $product->single_add_to_cart_text() ); ?></button>
<?php
/**
* @since 2.1.0.
*/
do_action( 'woocommerce_after_add_to_cart_button' );
?>
</form>
在此之后,我使用以下代码并为了测试目的,我将 value 设置为 30 。但它不起作用。我错过了什么?
add_filter( 'woocommerce_add_cart_item' , 'set_woo_prices');
function set_woo_prices( $woo_data ) {
if(isset( $_POST['new-width'])) { $woo_data['new-width'] =$_POST['new-width']; }
if(isset( $_POST['new-height'])) { $woo_data['new-height'] =$_POST['new-height']; }
if( $_POST['new-width'] !=="" && $_POST['new-height']!=="" ){
$woo_data['data']->set_price( "30" );
}
return $woo_data;
}
请指教。我的目标是根据用户输入的宽度和高度更改产品价格。
【问题讨论】:
标签: php wordpress woocommerce cart custom-fields