[英]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.