繁体   English   中英

WordPress的Woocommerce更新元

[英]Wordpress Woocommerce Update Meta

好的,所以我有一个会员系统。 embedding a cookie 我已经获得了可以在checkout page上添加新字段的代码,然后如果他们在新字段中键入cookie's #则可以强制该人员输入cookie's # 这是工作代码。

   add_action('woocommerce_after_order_notes', 'affid_field');

function affid_field($checkout)
{
    if(isset($_COOKIE['ap_ref_tracking'])) {
        echo '<div style=" width: 335px;clear: both;
    margin-bottom: 75px;" id="affid_field">';
        woocommerce_form_field('affid_field', array(
            'type' => 'text',
            'class' => array(
                'my-field-class form-row-wide'
            ) ,
            'label' => __('Retype Number Shown Below') ,
            'placeholder' => $_COOKIE['ap_ref_tracking'] ,
            'required' => true,
        ) , $checkout->get_value('affid_field'));
        echo '</div>';
    }
}


add_action('woocommerce_checkout_process', 'customise_checkout_field_process');

function customise_checkout_field_process()
{
    if(isset($_COOKIE['ap_ref_tracking'])) {
    // if the field is set, if not then show an error message.
        $field = $_POST['affid_field'];
        $aff = $_COOKIE['ap_ref_tracking'];
        if (!$field or $field != $aff) 
        wc_add_notice(__('Please re-enter '.$aff.' as shown on the Shipping Tab.') , 'error');
    }
}

add_action('woocommerce_checkout_update_order_meta', 'customise_checkout_field_update_order_meta');

function customise_checkout_field_update_order_meta($order_id)
{
    $affid_field = $_POST['affid_field'];
    if ( ! empty( $affid_field ) ) {
        update_post_meta( $order_id, '_affid_field', sanitize_text_field( $affid_field ) );
    }
}

但是我当时在想,是否可以通过将cookie注入meta更新中来缩短所有这些工作呢? 因此消除了对额外字段的需求,客户无需输入号码。 所以我做到了。

add_action('woocommerce_checkout_update_order_meta', 'customise_checkout_field_update_order_meta');

function customise_checkout_field_update_order_meta($order_id)
{
    if(isset($_COOKIE['ap_ref_tracking'])) {
            $aff = $_COOKIE['ap_ref_tracking'];
            update_post_meta( $order_id, '_affid_field', sanitize_text_field( $aff ) );
    )
}

根本不起作用,它使网站崩溃了。 不知道我在这里缺少什么,这应该起作用,对吗? 任何人都发现我的错误并帮助我,将不胜感激。

您正在使用“)”而不是“}”关闭if语句。

 add_action('woocommerce_checkout_update_order_meta', 'customise_checkout_field_update_order_meta');

function customise_checkout_field_update_order_meta($order_id)
{
    if(isset($_COOKIE['ap_ref_tracking'])) {
            $aff = $_COOKIE['ap_ref_tracking'];
            update_post_meta( $order_id, '_affid_field', sanitize_text_field( $aff ) );
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM