Обновление WooCommerce 3.0 не было добрым ко мне. Я добавил настраиваемое поле для проверки имени домена, и у меня возникли проблемы с поиском способа его сохранения. Этот код добавляет поле должным образом:
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: