Сайт находится в разработке

WooCommerce создание заказа

В WooCommerce для создания заказа есть функция wc_create_order(), она создаёт новый заказ и возвращает его в виде объекта в который возможно добавить нужные свойства.
Примеры использования данной функции с расшифровкой.

<?php
global $woocommerce; //для работы функций woocommerce не в шаблонах woocommerce
$order=wc_create_order(); //создаём новый заказ
//Записываем в массив данные о доставке заказа и данные клиента
$address = array(
    'first_name' => $first_name,
    'last_name'  => $last_name,
    'company'    => '',
    'email'      => $email,
    'phone'      => '',
    'address_1'  => $adress_one,
    'address_2'  => $adress_two, 
    'city'       => $city,
    'state'      => '',
    'postcode'   => $postcode,
    'country'    => ''
); 

    
$order->add_product( get_product( '99' ), 1 );//Добавляем в заказ товары: 99-ID товара, 1-количество

$order->set_address( $address, 'billing' ); //Добавляем данные о доставке
$order->set_address( $address, 'shipping' ); // и оплате

$payment_gateways = WC()->payment_gateways->payment_gateways();
$payment = $order->set_payment_method( $payment_gateways['cod'] ); // Установливаем способ оплаты (в переменной $payment_gateways хрянятся все доступные способы оплаты)

$order->calculate_totals(); //подбиваем сумму и видим что наш заказ появился в админке
$order->add_order_note($comment); //добавляет комментарий к заказу (можно указывать в подряд сколько угодно)
$order->update_status('processing', true); //устанавливает статус заказа "В обработке" (в этом случае WooCommerce отправляет уведомление администратору сайта и клиенту) и записываем информацию об оплате

в случае если нам нужно изменить стоимость товара

<?php
global $woocommerce;//для работы функций woocommerce не в шаблонах woocommerce
$order=wc_create_order(); //создаём новый заказ
//Записываем в массив данные о доставке заказа и данные клиента
$address = array(
    'first_name' => $first_name,
    'last_name'  => $last_name,
    'company'    => '',
    'email'      => $email,
    'phone'      => '',
    'address_1'  => $adress_one,
    'address_2'  => $adress_two, 
    'city'       => $city,
    'state'      => '',
    'postcode'   => $postcode,
    'country'    => ''
); 

$product_id = 99; // ID товара или вариации
$new_product_price = $new_price; // новая стоимость товара
$quantity = 1; // количество товаров
$product = wc_get_product( $product_id ); // получаем данные товара WC_Product object
$product->set_price( $new_product_price ); // Изменяем стоимость товара

$order->add_product( $product, $quantity); //Добавляем в заказ товар

$order->set_address( $address, 'billing' ); //Добавляем данные о доставке
$order->set_address( $address, 'shipping' ); // и оплате

$payment_gateways = WC()->payment_gateways->payment_gateways();
$payment = $order->set_payment_method( $payment_gateways['cod'] ); // Установливаем способ оплаты (в переменной $payment_gateways хрянятся все доступные способы оплаты)

$order->calculate_totals(); //подбиваем сумму и видим что наш заказ появился в админке
$order->add_order_note($comment); //добавляет комментарий к заказу(можно указывать в подряд сколько угодно)
$order->update_status('processing', true); //устанавливает статус заказа "В обработке" (в этом случае WooCommerce отправляет уведомление администратору сайта и клиенту) и записываем информацию об оплате

статус заказа назначается последовательно, если вам нужно установить статус Выполнен то вызываем $order->update_status ещё раз но уже в новом статусе.

<?php
$order->update_status('completed', true);

Возможные статусы

pending — В ожидании оплаты
processing — Обработка
on-hold — На удержании
completed — Выполнен
cancelled — Отменен
refunded — Возвращён
failed — Не удался

WooCommerce кастомизация поля поиска

Вывод поиска товаров wooxommerce в произвольном месте и со своим дизайном.
За вывод формы поиска отвечает функция get_product_search_form()

get_product_search_form()

Изменение дизайна и расположения элементов благодоря возможности переопределить содержимое формы. Разместите данный код в ваш functions.php изменить классы под ваши нужды в соответствии с вашим дизайн проектом

<?php
/**
 * Filter WooCommerce  Search Field
 *
 */
add_filter( 'get_product_search_form' , 'me_custom_product_searchform' );
function me_custom_product_searchform( $form ) {
	
        $form = '<form role="search" method="get" id="searchform" action="' . esc_url( home_url( '/'  ) ) . '">
                        <div class="new_search_form">
                                <label class="screen-reader-text" for="s">' . __( 'Search for:', 'woocommerce' ) . '</label>
                                <input type="text" value="' . get_search_query() . '" name="s" id="s" placeholder="' . __( 'My Search form', 'woocommerce' ) . '" />
                                <input type="submit" id="searchsubmit" value="'. esc_attr__( 'Search', 'woocommerce' ) .'" />
                                <input type="hidden" name="post_type" value="product" />
                        </div>
                </form>';

return $form;


}

Вот пример

<?php
/**
 * Filter WooCommerce  Search Field
 *
 */
add_filter( 'get_product_search_form' , 'me_custom_product_searchform' );
function me_custom_product_searchform( $form ) {
	
	$form = '<form role="search" method="get" id="searchform" action="' . esc_url( home_url( '/'  ) ) . '">
			<div class="search_box">
				<label class="screen-reader-text" for="s">' . __( 'Search for:', 'woocommerce' ) . '</label>
				<button type="submit"><i class="ion-ios-search-strong"></i></button>
				<input type="text" value="' . get_search_query() . '" name="s" id="s" placeholder="' . __( 'Search products...', 'woocommerce' ) . '" />                           
					<input type="hidden" name="post_type" value="product" />
			</div>
	</form>';
	return $form;
}