Мне нужно добавить два поля с именами «Налоговое управление» и «Налоговый номер» после поля «Название компании» в форме платежной информации на страницах оплаты и адресов моего сайта WooCommerce.
Страница оплаты основана на блоках Гутенберга. Поэтому сначала я создал файл JavaScript с именем custom-checkout-fields.js со следующим содержимым:
Мне нужно добавить два поля с именами «Налоговое управление» и «Налоговый номер» после поля «Название компании» в форме платежной информации на страницах оплаты и адресов моего сайта WooCommerce. Страница оплаты основана на блоках Гутенберга. Поэтому сначала я создал файл JavaScript с именем [b]custom-checkout-fields.js[/b] со следующим содержимым: [code]// custom-checkout-fields.js const initializeCheckoutBlocks = () => { // WooCommerce Blocks API check if (!window.wc || !window.wc.blocks || !window.wp) { console.log('WooCommerce Blocks API could not be loaded'); return; }
// Run when page is loaded if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', initializeCheckoutBlocks); } else { initializeCheckoutBlocks(); }
// Check when WooCommerce Blocks are ready document.addEventListener('wc-blocks-is-ready', initializeCheckoutBlocks); [/code] В [b]functions.php[/b] я добавил следующий код: [code]add_action('init', function() { register_post_meta('shop_order', '_billing_tax_office', [ 'type' => 'string', 'show_in_rest' => true, 'single' => true, ]);
// Add fields to Store API add_action('woocommerce_blocks_checkout_update_order_meta', function($order) { if (!empty($_POST['tax_office'])) { $order->update_meta_data('_billing_tax_office', sanitize_text_field($_POST['tax_office'])); } if (!empty($_POST['tax_number'])) { $order->update_meta_data('_billing_tax_number', sanitize_text_field($_POST['tax_number'])); } }); [/code] Чтобы добавить поля в форму на странице адресов, я использовал следующий код: [code]// Add tax fields to checkout page add_filter('woocommerce_checkout_fields', 'add_tax_fields_to_checkout');