У сучасному інтернет-торгівлі знижки та промокоди є важливим інструментом для привертання та утримання клієнтів. Woocommerce, як популярний інструмент для створення онлайн-магазинів на платформі WordPress, надає ряд вбудованих можливостей для налаштування знижок. Проте, іноді користувачі потребують специфічних функцій, які не передбачені стандартними інструментами.
Один з таких випадків – потреба застосовувати знижки на товари залежно від їх атрибутів. Наприклад, знижка може бути застосована лише до товарів певного бренду або категорії. Стандартні інструменти Woocommerce не надають такої можливості “з коробки”, тому для реалізації цієї функції потрібно створити власний плагін або використовувати сторонні рішення.
У даній статті ми розглянемо процес створення простого плагіна для Woocommerce, який застосовуватиме знижку до товарів на основі обраних атрибутів. Будемо розглядати код цього плагіна, який дозволить користувачам з легкістю встановлювати знижки на товари залежно від їх атрибутів.
Перш за все, давайте розберемося, яку задачу ми плануємо вирішити за допомогою нашого плагіна. Ми хочемо створити простий механізм, який дозволить адміністраторам магазину застосовувати знижки до товарів в залежності від їх атрибутів. Наприклад, адміністратор має можливість встановити знижку в розмірі 10% для товарів певного бренду або категорії, і ця знижка автоматично застосовуватиметься до всіх відповідних товарів при оновленні цін.
Почнемо з створення плагіна для Woocommerce, який буде відповідати нашим потребам. Нам знадобиться файл плагіна, який ми можемо розмістити в директорії
1 |
wp-content/plugins |
нашого WordPress-сайту. Створимо файл з назвою
1 |
discount-by-attributes.php |
і додамо наступний код:
1 |
<?php /* Plugin Name: Discount by Attributes Description: Plugin for applying discounts based on product attributes in WooCommerce. Version: 1.0 Author: Your Name */ // Додаємо хук, який активує функцію при ініціалізації адміністративного інтерфейсу add_action('admin_menu', 'add_admin_page'); // Функція для додавання сторінки в адміністративний інтерфейс function add_admin_page() { // Додаємо сторінку під "Woocommerce" меню add_submenu_page( 'woocommerce', 'Discount by Attributes', // Назва сторінки 'Discount by Attributes', // Назва пункту меню 'manage_options', 'discount-by-attributes', 'render_admin_page' ); } // Функція для рендерингу вмісту сторінки function render_admin_page() { if (isset($_POST['discount_percentage']) && isset($_POST['product_attribute'])) { $discount_percentage = floatval($_POST['discount_percentage']); $product_attribute = sanitize_text_field($_POST['product_attribute']); // Зберігання налаштувань в базу даних update_option('discount_percentage', $discount_percentage); update_option('product_attribute', $product_attribute); // Застосовуємо знижку до товарів з обраним атрибутом apply_discount_by_attribute($discount_percentage, $product_attribute); ?> <div class="updated"><p><strong><?php _e('Discount applied to products with selected attribute.'); ?></strong></p></div> <?php } ?> <div class="wrap"> <h5>Discount by Attributes</h5> <form method="post" action=""> <table class="form-table"> <tr> <th scope="row">Discount Percentage:</th> <td><input type="number" name="discount_percentage" min="0" max="100" step="0.01" /></td> </tr> <tr> <th scope="row">Attribute:</th> <td> <select name="product_attribute"> <option value="">Select Attribute</option> <?php // Завантажуємо всі атрибути товару $attributes = wc_get_attribute_taxonomies(); foreach ($attributes as $attribute) { echo '<option value="' . $attribute->attribute_name . '">' . $attribute->attribute_label . '</option>'; } ?> </select> </td> </tr> </table> <?php submit_button('Apply Discount'); ?> </form> </div> <?php } // Логіка застосування знижки до товарів з обраним атрибутом function apply_discount_by_attribute($discount_percentage, $product_attribute) { if ($discount_percentage && $product_attribute) { // Встановлюємо аргументи для запиту $args = array( 'posts_per_page' => -1, 'post_type' => 'product', 'tax_query' => array( array( 'taxonomy' => 'pa_' . $product_attribute, 'field' => 'slug', 'terms' => $product_attribute, ), ), ); // Отримуємо товари з обраним атрибутом $products = new WP_Query($args); // Ітеруємо через знайдені товари і застосовуємо знижку if ($products->have_posts()) { while ($products->have_posts()) { $products->the_post(); global $product; // Отримуємо звичайну ціну товару $regular_price = $product->get_regular_price(); // Розраховуємо нову ціну застосовуючи знижку $new_price = $regular_price * (1 - ($discount_percentage / 100)); // Встановлення нової ціни в поле "Ціна зі знижкою" $product->set_sale_price($new_price); $product->save(); } } wp_reset_postdata(); } } ?> |
Цей код створює адміністративну сторінку з формою для встановлення знижки та обрання атрибута товару. Після введення інформації та натискання кнопки “Застосувати знижку”, плагін автоматично застосовує введену знижку до всіх відповідних товарів. Тепер давайте детальніше розглянемо, як цей код працює.
Код плагіна складається з декількох основних частин:
1 |
admin_menu |
1 |
render_admin_page() |
1 |
apply_discount_by_attribute() |
Після того як користувач введе інформацію на адміністративній сторінці та натисне кнопку “Застосувати знижку”, введені дані будуть передані функції
1 |
apply_discount_by_attribute() |
, яка застосує знижку до всіх відповідних товарів.
Створення плагінів для Woocommerce може значно розширити можливості вашого онлайн-магазину та допомогти вирішити конкретні завдання, як у випадку з застосуванням знижок до товарів залежно від атрибутів. Завдяки гнучкості WordPress і його екосистеми плагінів, ви можете реалізувати практично будь-яку функціональність для вашого магазину.
Будуючи плагіни для Woocommerce, важливо ретельно розуміти основні концепції роботи з WordPress, а також рекомендується користуватися документацією та прикладами коду для ефективного вирішення завдань. Надіємося, що ця стаття допомогла вам краще зрозуміти процес створення плагінів для Woocommerce та реалізацію специфічної функціональності для вашого магазину.