重新排列和自定义woocommerce结帐字段

时间:2019-08-23 11:47:18

标签: php wordpress woocommerce checkout

我需要修改默认的woocommerce计费和运输字段。我需要移动其中一些,设置不同的form-row-class并在删除标签的同时添加一个占位符。我的代码可以正常工作,但是我想知道是否存在一种更简洁的解决方案,即是否可以缩短和/或优化代码。我的代码是

add_filter('woocommerce_default_address_fields', 'override_address_fields');
function override_address_fields( $address_fields ) {
    $address_fields['first_name']['placeholder'] = 'yxz';
    $address_fields['last_name']['placeholder'] = 'yxz';
    $address_fields['address_1']['placeholder'] = 'yxz';
    $address_fields['company']['placeholder'] = 'yxz';
    $address_fields['postcode']['placeholder'] = 'yxz';
    $address_fields['city']['placeholder'] = 'yxz';

    return $address_fields;
}

add_filter( "woocommerce_checkout_fields", "reordering_checkout_fields", 15, 1 );
function reordering_checkout_fields( $fields ) {
    $fields['billing']['billing_phone']['placeholder'] = 'yxz';
    $fields['billing']['billing_email']['placeholder'] = 'yxz';
    unset($fields['order']['order_comments']);

    return $fields;
}

add_filter( 'woocommerce_checkout_fields', 'rearrange_checkout_fields' ); 
function rearrange_checkout_fields( $checkout_fields ) {
    $checkout_fields['billing']['billing_country']['priority'] = 80;
    $checkout_fields['shipping']['shipping_country']['priority'] = 80;

    return $checkout_fields;
}

1 个答案:

答案 0 :(得分:0)

您可以在第一个函数中包含第三个函数,因此您的代码将类似于:

add_filter('woocommerce_default_address_fields', 'customize_default_address_fields', 20, 1 );
function customize_default_address_fields( $address_fields ) {
    $address_fields['first_name']['placeholder'] = 'yxz';
    $address_fields['last_name']['placeholder'] = 'yxz';
    $address_fields['address_1']['placeholder'] = 'yxz';
    $address_fields['company']['placeholder'] = 'yxz';
    $address_fields['postcode']['placeholder'] = 'yxz';
    $address_fields['city']['placeholder'] = 'yxz';

    // Reorder billing and shipping "country" fields (on checkout page)
    if ( is_checkout() )
        $address_fields['country']['priority'] = 80; // Country

    return $address_fields;
}

add_filter( "woocommerce_checkout_fields", "customize_other_checkout_fields", 20, 1 );
function customize_other_checkout_fields( $fields ) {
    $fields['billing']['billing_phone']['placeholder'] = 'yxz';
    $fields['billing']['billing_email']['placeholder'] = 'yxz';

    $fields['billing']['billing_email']['class'] = array('form-row-first'); // HERE
    $fields['billing']['billing_phone']['class'] = array('form-row-last');  // HERE

    unset($fields['order']['order_comments']);

    return $fields;
}

代码进入您的活动子主题(或活动主题)的function.php文件中。经过测试,可以正常工作。