Я использую плагин ACF для управления различными пользовательскими метаданными на веб-сайте WooCommerce.Одна из функций, которую я пытаюсь настроить, - это добавление настраиваемых полей на страницу оформления заказа WooCommerce.Я придерживаюсь общей концепции, изложенной на странице документации WC , которая позволяет добавлять пользовательские формы в форму проверки WC с помощью хука woocommerce_after_order_notes.Оттуда я ввожу форму acf с помощью функции acf_form () с формой, установленной в false, чтобы позволить ей не включать элементы формы ACF (то есть кнопку отправки ACF).Это похоже на работу, потому что я успешно смог заставить настраиваемые поля ACF отображаться в поле оформления заказа в соответствующем месте.
Оттуда я пытаюсь использовать функцию ACF update_field () в сочетании с хуком woocommerce_checkout_update_order_met.В соответствии с рекомендациями сообщества ACF здесь .Вот мой код, который я до сих пор помещаю в мой файл functions.php:
Эта часть работает, как надо.
add_action( 'woocommerce_after_order_notes', 'my_custom_budgetcenter_field' ); //This runs the my_custom_budgetcenter_field funtion within the chekout form.
function my_custom_budgetcenter_field( ) {
echo '<div id="my_custom_budget center_field"><h2>' . __('Budget Center Field') . '</h2></div>'; // This Line Adds A header Line the the bottom of the WC Checkout Page.
acf_form(array('form' => false,'fields' => array('acf_selected_budget_center'))); //This line outputs the ACF form with form value set to false so its included in the woocommerce checkout form. It then sets the fields to equal my the acf_selected_budget_center field group
}
Это часть, с которой у меня возникают проблемы:
add_action( 'woocommerce_checkout_update_order_meta', 'my_custom_budgetcenter_field_update_order_meta' ); //This line runs the my_custom_budgetcenter_field_update_order_meta when woocomerce updates the order meta when submiting the form.
function my_custom_budgetcenter_field_update_order_meta( $order_id ) {
$valueofbc = get_field( "field_5c005d0c5f829" );
$bcfieldkey = "field_5c005d0c5f829";
update_field( $bcfieldkey, $valueofbc, $order_id );
} ;
Когда я вручную устанавливаю строку $ valueofbc (Пример: $valueofbc = "001 - Activities" ;
), все работает.Я могу отправить заказ, и это поле будет обновлено жестко закодированной строкой.Однако, когда я установил его на параметр функции get_field , чтобы он использовал пользовательский файл ACF (выборочное значение), он не сохраняет значение.После некоторых копаний мне кажется, что мне нужно (ed) установить acf_form_head () над функцией wordpress get_header () в порядке шаблона страницы оформления заказа, чтобы ACF извлекал и публиковал данные.Однако, когда я сделал это и прошел процесс оформления заказа, а затем нажал «отправить заказ» на странице оформления заказа woocomerce, я получил «покинуть сайт? - внесенные вами изменения могут не сохраниться» - оставить - отменить «Уведомление JavaScript пристраница пытается обработать заказ. Когда я нажимаю «Выйти», он переходит на страницу подтверждения заказа, но не сохраняет мета-значение. Когда я нажимаю «Отмена», обработчик заказов просто вращается бесконечно и никогда не обновляет страницу.
На данный момент я на грани своего ума, пытаясь заставить это работать. Мне нужно использовать ACF из-за некоторой продвинутой условной логики в том, что такое отображение, и того, как данные будут работать с другими данными в других формах.Базовая форма оформления заказа добавить плагин, а не вариант. Кроме того, поддержка ACF может занять несколько недель, поэтому я публикую здесь. Любая помощь будет принята с благодарностью.
Спасибо,