我想实现一个功能,当我的woocommerce订单上的数量更改(例如更改为2)时,应该出现2个文本字段,用户可以在其中输入2个名称和2个图像上载字段。
我找到了一些代码并在我的function.php中实现了它,效果很好:
//Custom WooCommerce Checkout Fields based on Quantity
add_action( 'woocommerce_before_order_notes', 'person_details' );
function person_details($checkout) {
global $woocommerce;
$count = $woocommerce->cart->cart_contents_count;
$i = 1;
for($k=2; $k<= $count; $k++) {
$i++;
print ('<h3>Infos Spieler Nr. '.$i.'</h3>');
woocommerce_form_field( 'cstm_full_name'.$i, array(
'type' => 'text',
'class' => array('my-field-class form-row-wide'),
'label' => __('Name'),
'placeholder' => __('Name eingeben'),
),
$checkout->get_value( 'cstm_full_name'.$i ));
echo '<div class="clear"></div>';
woocommerce_form_field( 'cstm_nation'.$i, array(
'type' => 'text',
'class' => array('my-field-class form-row-first'),
'label' => __('Nationalitaet'),
'placeholder' => __('Deutsch'),
),
$checkout->get_value( 'cstm_nation'.$i ));
woocommerce_form_field( 'cstm_nummer'.$i, array(
'type' => 'text',
'class' => array('my-field-class form-row-last'),
'label' => __('Nummer'),
'placeholder' => __('9'),
),
$checkout->get_value( 'cstm_nummer'.$i ));
echo '<div class="clear"></div>';
woocommerce_form_field( 'cstm_position'.$i, array(
'type' => 'text',
'class' => array('my-field-class form-row-wide'),
'label' => __('Position'),
'placeholder' => __('ST'),
),
$checkout->get_value( 'cstm_position'.$i ));
}
}
/**
* Save value of fields
*/
add_action('woocommerce_checkout_update_order_meta',
'customise_checkout_field_update_order_meta');
function customise_checkout_field_update_order_meta($order_id)
{
global $woocommerce;
$count = $woocommerce->cart->cart_contents_count;
$i = 1;
for($k=2; $k<= $count; $k++) {
$i++;
if (!empty($_POST['cstm_full_name'.$i])) {
update_post_meta($order_id, 'Name'.$i, sanitize_text_field($_POST['cstm_full_name'.$i]));
}
if (!empty($_POST['cstm_nation'.$i])) {
update_post_meta($order_id, 'Nation'.$i, sanitize_text_field($_POST['cstm_nation'.$i]));
}
if (!empty($_POST['cstm_nummer'.$i])) {
update_post_meta($order_id, 'Nummer'.$i, sanitize_text_field($_POST['cstm_nummer'.$i]));
}
if (!empty($_POST['cstm_position'.$i])) {
update_post_meta($order_id, 'Position'.$i, sanitize_text_field($_POST['cstm_position'.$i]));
}
}
}
问题是:我对使用wordpress编码不了解很多。因此,我希望有所帮助。 我自定义了代码,但是我需要一个额外的上传字段,客户可以在其中上传图片。我需要在woocommerce订单的后端中看到它(我已经在后端中看到了自定义文本字段,这是可行的)。我找到了一些代码,这在前端工作正常,但是我在后端看不到图片。这是代码:
//For upload image
add_filter( 'woocommerce_shipping_fields',
'woo_filter_upload_shipping' );
function woo_filter_upload_shipping( $address_fields ) {
// $address_fields['file_upload']['required'] = true;
$address_fields['file_upload'] = array(
//'label' => __('Upload your ID', 'woocommerce'),
'required' => false,
'class' => array('form-row-wide'),
'clear' => true
);
return $address_fields;
}
//Using this function to show Upload field on your checkout page.
function add_file_field(){
$uploadFile = "";
$uploadFile .='<div id="upload_CNIC_image">';
$uploadFile .='<input id="file_upload" name="file_upload"
type="file" multiple="true">';
$uploadFile .='<span id="">';
$uploadFile .='</span>';
$uploadFile .='</div>';
echo $uploadFile;
}
add_action('woocommerce_after_order_notes','add_file_field');
我需要第一个代码中的上传代码,以便它与其他texfields一起出现。
这两个代码也都显示在结帐站点上。当客户实时更改其更新数量时,是否可以在产品站点上直接显示此信息?
希望我的意思是可以理解的。
谢谢!