【问题标题】:PHP custom checkout fields for each product WooCommerce WordPress每个产品 WooCommerce WordPress 的 PHP 自定义结帐字段
【发布时间】:2019-02-20 16:20:18
【问题描述】:

所以如果有人可以的话,我需要一些帮助:D 我需要在 Checkout 中为每个产品设置不同的自定义字段。我设法用 funtions.php 中的 php 做到了这一点。到目前为止一切都很好,但是我添加的所有字段都出现在随机位置,这就是我为字段添加优先级的原因,并且存在问题。由于优先级设置,没有每个字段的产品的结帐将得到空字段。我该如何解决? (见截图)

add_filter( 'woocommerce_checkout_fields' , 'custom_override_checkout_fields' );
function custom_override_checkout_fields( $fields ) {
    foreach( WC()->cart->get_cart() as $cart_item ){
        $product_id = $cart_item['product_id'];
        if( $product_id == 775 ) {
            $fields['billing']['billing_masa'] = array(
                'label'     => __('Puteti lua 3-4 mese pe zi la intrvale egale de timp?', 'woocommerce'),
                'required'  => true ,
                'class'     => array('form-row-wide'),
                'clear'     => true
            );
            $fields['billing']['billing_intoleranta'] = array(
                'label'     => __('Aveti intoleranta la lactoza?', 'woocommerce'),
                'required'  => true ,
                'class'     => array('form-row-wide'),
                'clear'     => true
            );
            $fields['billing']['billing_intoleranta2'] = array(
                'label'     => __('Aveti alimente pe care nu le tolerati?', 'woocommerce'),
                'required'  => true ,
                'class'     => array('form-row-wide'),
                'clear'     => true
            );
            $fields['billing']['billing_variante'] = array(
                'label'     => __('Doriti sa primiti mai multe variante de alimente pentru a va alcatui masa dupa placul dumneavoastra?', 'woocommerce'),
                'required'  => true ,
                'class'     => array('form-row-wide'),
                'clear'     => true
            );
            $fields['billing']['billing_boli'] = array(
                'label'     => __('Suferiti de diabet, hipertensiune, afectiuni digestive?', 'woocommerce'),
                'required'  => true ,
                'class'     => array('form-row-wide'),
                'clear'     => true
            );
            $fields['billing']['billing_rutina'] = array(
                'label'     => __('Descrieti rutina alimentara zilnica de pana acum.', 'woocommerce'),
                'required'  => true ,
                'class'     => array('form-row-wide'),
                'clear'     => true
            );
        }
        if( $product_id == 776 ) {
            $fields['billing']['billing_masa'] = array(
                'label'     => __('Puteti lua 3-4 mese pe zi la intrvale egale de timp?', 'woocommerce'),
                'required'  => true ,
                'class'     => array('form-row-wide'),
                'clear'     => true
            );
            $fields['billing']['billing_intoleranta'] = array(
                'label'     => __('Aveti intoleranta la lactoza?', 'woocommerce'),
                'required'  => true ,
                'class'     => array('form-row-wide'),
                'clear'     => true
            );
            $fields['billing']['billing_intoleranta2'] = array(
                'label'     => __('Aveti alimente pe care nu le tolerati?', 'woocommerce'),
                'required'  => true ,
                'class'     => array('form-row-wide'),
                'clear'     => true
            );
            $fields['billing']['billing_variante'] = array(
                'label'     => __('Doriti sa primiti mai multe variante de alimente pentru a va alcatui masa dupa placul dumneavoastra?', 'woocommerce'),
                'required'  => true ,
                'class'     => array('form-row-wide'),
                'clear'     => true
            );
            $fields['billing']['billing_boli'] = array(
                'label'     => __('Suferiti de diabet, hipertensiune, afectiuni digestive?', 'woocommerce'),
                'required'  => true ,
                'class'     => array('form-row-wide'),
                'clear'     => true
            );
            $fields['billing']['billing_rutina'] = array(
                'label'     => __('Descrieti rutina alimentara zilnica de pana acum.', 'woocommerce'),
                'required'  => true ,
                'class'     => array('form-row-wide'),
                'clear'     => true
            );
            $fields['billing']['billing_rutina2'] = array(
                'label'     => __('Descrieti o zi din viata dvs din punct de vedere alimentar.', 'woocommerce'),
                'required'  => true ,
                'class'     => array('form-row-wide'),
                'clear'     => true
            );
            $fields['billing']['billing_istoric'] = array(
                'label'     => __('Istoricul dvs medical include interventii de natura digestiva (olecistectomie, litiaza biliara, rezectie gastrica)? Daca da, mentionati ca s-a realizat.', 'woocommerce'),
                'required'  => true ,
                'class'     => array('form-row-wide'),
                'clear'     => true
            );
        } 
    }
    return $fields;
}

/*
Priority
 */

function js_sort_checkout_fields( $fields ) {
    $fields['billing']['billing_masa']['priority'] = 111;
    $fields['billing']['billing_intoleranta']['priority'] = 112;
    $fields['billing']['billing_intoleranta2']['priority'] = 113;
    $fields['billing']['billing_variante']['priority'] = 114;
    $fields['billing']['billing_boli']['priority'] = 115;
    $fields['billing']['billing_rutina']['priority'] = 116;
    $fields['billing']['billing_rutina2']['priority'] = 117;
    $fields['billing']['billing_istoric']['priority'] = 118;
    return $fields;
}
add_filter( 'woocommerce_checkout_fields', 'js_sort_checkout_fields' );

【问题讨论】:

    标签: php wordpress woocommerce


    【解决方案1】:

    你看过模板了吗,里面可能有解决方案。我有一个类似的问题,我用这种方式解决了。 此致。 奥利维尔·安杰洛兹-佩西

    【讨论】:

    • 最好是评论!
    • 你能给出解决方案吗?分别如何改变?谢谢你:D
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-10
    • 2020-02-22
    • 2023-03-19
    相关资源
    最近更新 更多