Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
WooCommerce custom checkout fields
<?php
class SolusiPress_Custom_Woo_Checkout {
public function __construct() {
add_filter( 'woocommerce_default_address_fields', array( $this, 'woo_address_fields' ), 50, 1 );
add_filter( 'woocommerce_checkout_fields', array( $this, 'woo_checkout_fields' ) );
// first & last name merge
add_filter( 'default_checkout_billing_first_name', array( $this, 'first_name_default_value' ), 10, 2 );
add_filter( 'default_checkout_shipping_first_name', array( $this, 'first_name_default_value' ), 10, 2 );
add_filter( 'woocommerce_checkout_posted_data', array( $this, 'checkout_full_name_posted_data' ), 11 );
}
public function woo_address_fields( $fields ) {
unset( $fields['company'] );
unset( $fields['postcode'] );
// merge first name & last name
$fields['first_name']['class'][0] = 'form-row-wide';
$fields['first_name']['label'] = 'Full Name';
unset( $fields['last_name'] );
// swap field position
$fields['address_1']['priority'] = 60;
$fields['address_2']['priority'] = 50;
//unset($fields['address_2']); # uncomment to remove address_2
return $fields;
}
public function woo_checkout_fields( $fields ) {
/* remove email or phone */
unset( $fields['billing']['billing_phone'] );
//unset( $fields['billing']['billing_email'] );
return $fields;
}
public function first_name_default_value( $value, $input ) {
$checkout = WC_Checkout::instance();
$ln = $checkout->get_value( str_replace( 'first', 'last', $input ) );
return trim( $value . ' ' . $ln );
return $value;
}
private function get_last_name( $full_name ) {
unset( $full_name[0] );
return implode( ' ', $full_name );
}
function checkout_full_name_posted_data( $data ) {
if( isset( $data['billing_first_name'] ) ) {
$full_name = explode( ' ', $data['billing_first_name'] );
$data['billing_first_name'] = $full_name[0];
$data['billing_last_name'] = $this->get_last_name( $full_name );
}
if( isset( $data['shipping_first_name'] ) ) {
$full_name = explode( ' ', $data['shipping_first_name'] );
$data['shipping_first_name'] = $full_name[0];
$data['shipping_last_name'] = $this->get_last_name( $full_name );
}
return $data;
}
}
new SolusiPress_Custom_Woo_Checkout();
<?php
public function woo_address_fields( $fields ) {
unset( $fields['company'] );
unset( $fields['postcode'] );
// merge first name & last name
$fields['first_name']['class'][0] = 'form-row-wide';
$fields['first_name']['label'] = 'Full Name';
unset( $fields['last_name'] );
// swap field position
$fields['address_1']['priority'] = 60;
$fields['address_2']['priority'] = 50;
//unset($fields['address_2']); # uncomment to remove address_2
return $fields;
}
public function woo_checkout_fields( $fields ) {
/* remove email or phone */
unset( $fields['billing']['billing_phone'] );
//unset( $fields['billing']['billing_email'] );
return $fields;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment