embedding a cookie
的。我已经获得了代码来为checkout page
添加一个新字段,然后强制该用户输入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注入元更新中,我不能简单地缩短所有这些。因此,无需额外的字段,客户必须输入数字。所以我这样做了。
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 ) );
)
}
根本没有用,它使网站崩溃了。不知道我在这里缺少什么,这应该有用,对吧?任何人发现我的错误,并给我一只手,将不胜感激。
答案 0 :(得分:1)
您正在使用“)”代替“}”关闭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 ) );
}
}