RTFM.WIKI

Ordnung muß sein. Ordnung über alles (18+)

Инструменты пользователя

Инструменты сайта


web:wordpress:woocommerce

Woocommerce разное

Удалить Woocommerce

Добавить в файл wp-config.php

define( 'WC_REMOVE_ALL_DATA', true );

Деактивировать плагин, удалить плагин, все таблицы WC будут удалены.

Источник: Installing and Uninstalling WooCommerce

Получить значения полей на странице checkout

Дополнительные поля созданы через Checkout Field Editor for WooCommerce

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 );

Например чтобы получить поле ИНН (поле работает через сервис 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

Плагин

Задача - получить значение поля из заказа.

Данные из 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)

Пример 1, 2

Пример 1

Пример 1

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
                           }
                        }
                    }
                }
            }
        }
    }
}

Пример 2

Пример 2

$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
                            }
                        }
                    }
                }
            }
        }

См. также

Записать данные заказа в локальный текстовый файл

$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%;
}

Обсуждение

Ваш комментарий. Вики-синтаксис разрешён:
 
web/wordpress/woocommerce.txt · Последнее изменение: 2024/05/24 20:34 — dx