====== Woocommerce разное ====== ==== Удалить Woocommerce ==== Добавить в файл ''wp-config.php'' define( 'WC_REMOVE_ALL_DATA', true ); Деактивировать плагин, удалить плагин, все таблицы WC будут удалены. Источник: [[https://woocommerce.com/document/installing-uninstalling-woocommerce/#uninstalling-woocommerce|Installing and Uninstalling WooCommerce]] ==== Получить значения полей на странице checkout ==== Дополнительные поля созданы через [[https://wordpress.org/plugins/woo-checkout-field-editor-pro/|Checkout Field Editor for WooCommerce]] [[https://www.themehigh.com/docs/checkout-field-editor-frequently-asked-questions/|FAQ Themehigh]] В Woocommerce заказ это пост. Получить метаданные можно с помощью get_post_meta(). Данные хранятся в таблице **wp_postmeta** $order_meta = get_post_meta( $order_id, $field_name, true ); Чтобы получить метаданные пользователя/клиента используем get_user_meta. Данные хранятся в таблице **wp_usermeta**. $user_meta = get_user_meta( $user_id, $field_name, true ); Например чтобы получить поле ИНН (поле работает через [[https://dadata.ru/|сервис DaData]]) $order = wc_get_order($order_id); $user_id = $order->get_user_id(); $billing_inn = get_user_meta($user_id, 'billing_inn', true); ==== Product Addons for Woocommerce ==== Плагин * https://wordpress.org/plugins/woo-custom-product-addons/ (free) * https://acowebs.com/woo-custom-product-addons/ (pro) Задача - получить значение поля из заказа. Данные из product addon можно получить через **field label**, **field id** и **field name**. Через **field label** $item->get_meta('Field Label'); Пример foreach ($order->get_items() as $item_id => $item ) { $field_cpu = wc_get_order_item_meta( $item_id, 'Процессор', true); $field_ram = wc_get_order_item_meta( $item_id, 'Память', true); } Через **field id** или **field name** (_WCPA_order_meta_data) Пример [[https://wordpress.org/support/topic/how-to-retrieve-a-text-field-value-from-order/|1]], [[https://wordpress.org/support/topic/access-fields-with-wc-order-object/|2]] add_action('woocommerce_checkout_order_processed', 'get_wcpa_data'); function get_wcpa_data($order_id) { $order = wc_get_order($order_id); foreach ($order->get_items() as $item_id => $item) { $orderData = $item->get_meta('_WCPA_order_meta_data'); if (is_array($orderData)) { foreach ($orderData as $sectionKey => $section) { if (isset($section['fields']) && is_array($section['fields'])) { foreach ($section['fields'] as $row) { foreach ($row as $field) { if($field['name']=='Field Name Here'){ // change the field name $requiredText = $field['value']; // you can get teh required data here } } } } } } } } $orderData = $item->get_meta('_WCPA_order_meta_data'); if (is_array($orderData)) { foreach ($orderData as $sectionKey => $section) { if (isset($section['fields']) && is_array($section['fields'])) { foreach ($section['fields'] as $row) { foreach ($row as $field) { if ($field['name'] == 'Field Name here') { $requiredText = $field['value']; // you can get required data here } } } } } } См. также * [[https://grietjegoedkoop.nl/websitestuff/woocommerce-ordered-items-data/|Woocommerce ordered items data]] * [[https://stackoverflow.com/questions/39401393/how-to-get-woocommerce-order-details|How to get WooCommerce order details]] ==== Записать данные заказа в локальный текстовый файл ==== $order = wc_get_order($order_id); $user_id = $order->get_user_id(); foreach ( $order->get_items() as $item ) { $quantity = $item->get_quantity(); // что-то ещё } $postDataArray = [ "billing_first_name" => $order->get_billing_first_name(), "billing_last_name" => $order->get_billing_last_name(), "billing_postcode" => $order->get_billing_postcode(), "quantity" => "$quantity" ]; $file_path = 'textfile.txt'; $file_handle = fopen($file_path, 'a+'); if ($file_handle) { fwrite($file_handle, print_r($postDataArray, true) . "\n"); fclose($file_handle); ==== Выполнить POST запрос при успешном платеже ==== add_action( 'woocommerce_payment_complete', 'make_curl_post_request_after_payment' ); function make_curl_post_request_after_payment($order_id) { $order = wc_get_order($order_id); $user_id = $order->get_user_id(); $postDataArray = [ "billing_first_name" => $order->get_billing_first_name(), "billing_last_name" => $order->get_billing_last_name(), "billing_postcode" => $order->get_billing_postcode(), "quantity" => "$quantity" ]; $data = http_build_query($postDataArray); $url = 'http://API_URL'; $cURL = curl_init(); curl_setopt($cURL, CURLOPT_URL,$url); curl_setopt($cURL, CURLOPT_POSTFIELDS, $data); curl_setopt($cURL, CURLOPT_HEADER,false); curl_setopt($cURL, CURLOPT_RETURNTRANSFER,true); curl_setopt($cURL, CURLOPT_POST, true); curl_setopt($cURL, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($cURL, CURLOPT_CONNECTTIMEOUT,10); $response = curl_exec($cURL); curl_close($cURL); echo $response; $order->update_status('completed'); } ==== Ширина кнопки купить/в корзину ==== Если у товара нет выбора количества, то кнопка "купить" ("в корзину") меняет своё расположение. Чтобы установить ширину кнопку на всю ширину для form.cart .single_add_to_cart_button{ width: 100%; } или .single_add_to_cart_button.button.alt { display: block; width: 100%; } {{tag>wordpress woocommerce cms}}