Автоматическое установление и настройка WooCommerce через код в WordPress

WooCommerce является одним из самых популярных плагинов для организации интернет-магазина на WordPress. Часто при разработке крупных проектов требуется автоматизировать процесс установки и первичной настройки WooCommerce, чтобы избежать ручных действий и ускорить развертывание.

Зачем нужна автоматизация установки WooCommerce через код

Если вы создаёте несколько сайтов с интернет-магазинами, либо хотите включить WooCommerce как часть более сложной кастомной системы, то ручная установка и настройка займёт много времени. Автоматизация позволяет:

  • Сэкономить время на развертывание новых проектов.
  • Гарантировать одинаковую базовую конфигурацию для всех сайтов.
  • Легко интегрировать WooCommerce в свои кастомные решения.

К тому же, вы можете программно включать нужные опции WooCommerce, создавать страницы магазина, настраивать валюту, методы оплаты и доставки без захода в админку.

Автоматическая установка WooCommerce через wporder_activate_woocommerce()

Для начала нужно убедиться, что плагин WooCommerce установлен, и если нет — установить и активировать его программно. Вот пример функции для этого:

function wporder_activate_woocommerce() {
    include_once ABSPATH . 'wp-admin/includes/plugin.php';

    if (!is_plugin_active('woocommerce/woocommerce.php')) {
        if (!file_exists(WP_PLUGIN_DIR . '/woocommerce')) {
            // Автоматическая установка плагина через WP CLI или API требует серверных прав
            // Рекомендуется ставить вручную или через WP CLI
            return new WP_Error('woocommerce_not_installed', 'Плагин WooCommerce не установлен. Установите вручную или через WP CLI.');
        }
        activate_plugin('woocommerce/woocommerce.php');
    }
}

Обратите внимание: WordPress не позволяет штатно устанавливать плагины из админки через код без использования WP CLI или внешних сервисов. Поэтому советуем ставить WooCommerce вручную или через WP CLI, а ниже — делать автоматическую настройку.

Автоматическая базовая настройка WooCommerce через код

После активации WooCommerce можно программно выставить основные параметры магазина. Например, задать валюту, страну, методы оплаты и доставки.

Настройка основных опций WooCommerce

Ниже пример функции, которую можно запускать при активации вашей темы или плагина:

function wporder_setup_woocommerce_options() {
    if (!class_exists('WooCommerce')) {
        return;
    }

    // Валюта
    update_option('woocommerce_currency', 'RUB');

    // Страна
    update_option('woocommerce_default_country', 'RU');

    // Формат цены
    update_option('woocommerce_price_num_decimals', '2');
    update_option('woocommerce_price_thousand_sep', ' ');
    update_option('woocommerce_price_decimal_sep', ',');

    // Включить налог
    update_option('woocommerce_calc_taxes', 'yes');

    // Методы оплаты (по умолчанию включим только оплату при доставке)
    update_option('woocommerce_cod_settings', array(
        'enabled' => 'yes',
        'title' => 'Оплата при доставке',
        'description' => 'Оплата наличными при получении заказа',
    ));

    // Отключить остальные методы оплаты
    update_option('woocommerce_paypal_settings', array('enabled' => 'no'));
    update_option('woocommerce_stripe_settings', array('enabled' => 'no'));

    // Методы доставки (например, бесплатная доставка)
    update_option('woocommerce_free_shipping_settings', array(
        'enabled' => 'yes',
        'title' => 'Бесплатная доставка',
        'min_amount' => 1000,
    ));
}

Создание страниц магазина и корзины автоматически

WooCommerce требует наличия определённых страниц — Магазин, Корзина, Оформление заказа, Личный кабинет. Обычно плагин создаёт их сам при активации, но если нужно, можно создать или проверить их программно:

function wporder_create_woocommerce_pages() {
    $pages = array(
        'shop' => 'Магазин',
        'cart' => 'Корзина',
        'checkout' => 'Оформление заказа',
        'myaccount' => 'Личный кабинет',
    );

    foreach ($pages as $slug => $title) {
        $page = get_page_by_path($slug);
        if (!$page) {
            $page_id = wp_insert_post(array(
                'post_title' => $title,
                'post_name' => $slug,
                'post_status' => 'publish',
                'post_type' => 'page',
            ));

            // Установить нужный шорткод для страницы
            if ($slug === 'shop') {
                update_post_meta($page_id, '_wp_page_template', '');
            } elseif ($slug === 'cart') {
                wp_update_post(array(
                    'ID' => $page_id,
                    'post_content' => '[woocommerce_cart]',
                ));
            } elseif ($slug === 'checkout') {
                wp_update_post(array(
                    'ID' => $page_id,
                    'post_content' => '[woocommerce_checkout]',
                ));
            } elseif ($slug === 'myaccount') {
                wp_update_post(array(
                    'ID' => $page_id,
                    'post_content' => '[woocommerce_my_account]',
                ));
            }
        }
    }

    // Обновить опции WooCommerce для привязки страниц
    update_option('woocommerce_shop_page_id', get_page_by_path('shop')->ID);
    update_option('woocommerce_cart_page_id', get_page_by_path('cart')->ID);
    update_option('woocommerce_checkout_page_id', get_page_by_path('checkout')->ID);
    update_option('woocommerce_myaccount_page_id', get_page_by_path('myaccount')->ID);
}

Расширение автоматизации: создание кастомных методов доставки и оплаты

Для уникальных проектов часто требуется добавить свои методы доставки или оплаты. WooCommerce позволяет создавать собственные классы с реализацией.

Пример кастомного метода доставки

Ниже пример простого метода доставки, который добавляет фиксированную стоимость 200 рублей:

add_action('woocommerce_shipping_init', function() {
    class WC_Shipping_Wporder_Fixed extends WC_Shipping_Method {
        public function __construct() {
            $this->id = 'wporder_fixed';
            $this->method_title = __('Фиксированная доставка', 'wporder');
            $this->enabled = 'yes';
            $this->title = 'Фиксированная доставка';
            $this->init();
        }

        function init() {
            $this->availability = 'including';
            $this->countries = array('RU');
        }

        public function calculate_shipping($package = array()) {
            $rate = array(
                'id' => $this->id,
                'label' => $this->title,
                'cost' => '200',
                'calc_tax' => 'per_order'
            );
            $this->add_rate($rate);
        }
    }
});

add_filter('woocommerce_shipping_methods', function($methods) {
    $methods['wporder_fixed'] = 'WC_Shipping_Wporder_Fixed';
    return $methods;
});

Такой метод можно включить в настройках доставки, и он будет отображаться для выбора покупателем.

Пример кастомного метода оплаты

Создадим простой метод оплаты "Оплата по квитанции":

add_action('plugins_loaded', function() {
    class WC_Gateway_Wporder_Invoice extends WC_Payment_Gateway {
        public function __construct() {
            $this->id = 'wporder_invoice';
            $this->method_title = __('Оплата по квитанции', 'wporder');
            $this->has_fields = false;
            $this->init_form_fields();
            $this->init_settings();
            $this->title = $this->get_option('title');

            add_action('woocommerce_update_options_payment_gateways_' . $this->id, array($this, 'process_admin_options'));
        }

        public function init_form_fields() {
            $this->form_fields = array(
                'enabled' => array(
                    'title' => __('Включить/Отключить', 'wporder'),
                    'type' => 'checkbox',
                    'label' => __('Включить оплату по квитанции', 'wporder'),
                    'default' => 'yes'
                ),
                'title' => array(
                    'title' => __('Название', 'wporder'),
                    'type' => 'text',
                    'description' => __('Название метода оплаты, которое увидит клиент', 'wporder'),
                    'default' => __('Оплата по квитанции', 'wporder'),
                    'desc_tip' => true,
                ),
            );
        }

        public function process_payment($order_id) {
            $order = wc_get_order($order_id);
            $order->update_status('on-hold', __('Ожидается оплата по квитанции', 'wporder'));
            WC()->cart->empty_cart();

            return array(
                'result' => 'success',
                'redirect' => $this->get_return_url($order),
            );
        }
    }

    add_filter('woocommerce_payment_gateways', function($methods) {
        $methods[] = 'WC_Gateway_Wporder_Invoice';
        return $methods;
    });
});

Использование плагинов WPShop для расширения и автоматизации WooCommerce

Для более удобной и мощной автоматизации можно использовать плагины из WPShop.ru. Например:

  • Clearfy Pro — оптимизация и ускорение WooCommerce.
  • Expert Review — расширенные отзывы и рейтинги товаров.
  • ABC Pagination — удобная постраничная навигация для страниц магазина.

Эти инструменты легко интегрируются и позволяют сделать магазин более удобным и эффективным.

Выводы и рекомендации

Автоматизация установки и базовой настройки WooCommerce через код — удобный способ ускорить запуск проектов. При этом важно помнить, что установка плагина лучше делается вручную или через WP CLI, а уже настройку и расширения можно реализовать программно.

Используйте примеры из статьи, чтобы создавать кастомные методы оплаты и доставки, создавать страницы и устанавливать базовые опции магазина. Это обеспечит стабильную и единообразную работу WooCommerce на ваших сайтах.

Автоматическое создание отчёта по просмотрам и активности пользователей в WordPress
03.01.2026
Автоматическое создание резервных копий WordPress с помощью PHP и плагинов
21.02.2026
Автоматизация создания и обновления заказов через REST API в WordPress
27.03.2026
WooCommerce: решение проблемы с отправкой писем после оформления заказа
07.07.2026
Как создать собственный вид регистрации в WordPress с примерами кода
10.11.2025