WooCommerce 3.0更新對我來說並不友好。我添加了一個自定義必填字段來檢出域名,並且無法確定如何保存它。此代碼添加場仍正常:在WooCommerce中添加自定義結賬區域以訂購
add_action('woocommerce_after_order_notes', 'add_domain_checkout_field');
function add_domain_checkout_field($checkout) {
echo '<div id="add_domain_checkout_field"><h2>' . __('Domain') . '</h2>';
woocommerce_form_field('sitelink_domain', array(
'type' => 'text',
'required' => true,
'class' => array('my-field-class form-row-wide'),
'label' => __('Domain where SiteLink will be installed'),
'placeholder' => __('Enter your URL'),
), $checkout->get_value('sitelink_domain'));
echo '</div>';
}
,我試圖挽救它,像這樣:
add_action('woocommerce_checkout_create_order', 'add_domain_to_order_meta', 10, 2);
function add_domain_to_order_meta($order, $data) {
if (! empty($_POST['sitelink_domain'])) {
$order->add_meta_data('ssla_sitelink_url', sanitize_text_field($_POST['sitelink_domain']));
}
}
但是元似乎並沒有被添加或保存任何地方。
我知道$_POST
變量是存在的,我有錯誤記錄下來看到。
測試一些抓取和錯誤記錄混淆了我進一步:
$sitelink_domain = $subscription->get_meta_data('ssla_sitelink_url');
error_log(print_r( $sitelink_domain, true));
//輸出爲:
[21-Apr-2017 01:26:27 UTC] Array
(
[0] => stdClass Object
(
[id] => 270086
[key] => _ssla_sitelink_url
[value] => lololol.com
)
[1] => stdClass Object
(
[id] => 270089
[key] => _download_permissions_granted
[value] => 1
)
)
然而,
$sitelink_domain = $subscription->get_meta('ssla_sitelink_url');
error_log('Domain: ' . $sitelink_domain);
輸出就是:
[21-Apr-2017 01:27:39 UTC] Domain:
如何初始化'$ subscription'?請記住,即使他們共享大量數據,訂閱訂單和訂單也不盡相同。 – helgatheviking
訂閱通過我正在使用的鉤子傳入,'woocommerce_subscription_status_updated',它看起來像某種原因'add_meta_data()'是在帶有下劃線的密鑰前加上?我嘗試了'$ subscription-> get_meta('_ssla_sitelink_url');'並且它正確地將其拉出... – thatryan