WP Manifestindependent plugin directory
manifest / ecommerce / wordpress-woocommerce-attributs

VPWC Attribute Display Settings

Гибкий WordPress-плагин для управления выводом атрибутов WooCommerce: листинг, карточка товара и фильтры — всё настраивается из админки.

by VP · github.com/va-proger/wordpress-woocommerce-attributs · website

0stars
0forks

Install

No release zip yet. The repository archive installs, but the folder name will carry the branch suffix and updates will not flow:

wp plugin install https://github.com/va-proger/wordpress-woocommerce-attributs/archive/refs/heads/main.zip

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

📋 Содержание

📖 Описание

VPWC Attribute Display Settings — это профессиональный плагин для WordPress, который предоставляет полный контроль над отображением атрибутов товаров WooCommerce. Плагин позволяет настраивать, какие атрибуты и в каком количестве отображаются на странице каталога, детальной странице товара и в фильтрах.

Зачем нужен этот плагин?

  • Гибкая настройка вывода — выберите, какие атрибуты показывать на листинге и детальной странице
  • Контроль количества — установите лимит отображаемых атрибутов
  • Управление порядком — настройте порядок вывода атрибутов через сортировку
  • Кастомные лейблы — задайте собственные названия для атрибутов
  • Единицы измерения — добавьте единицы измерения к значениям атрибутов
  • Фильтры по атрибутам — используйте шорткод для вывода фильтров
  • Автоматический вывод — атрибуты выводятся автоматически через хуки WooCommerce
  • Программный доступ — используйте функции плагина в своей теме

🚀 Основные возможности

Управление выводом атрибутов

  • Выбор атрибутов для листинга — настройте, какие атрибуты показывать на странице каталога
  • Выбор атрибутов для детальной страницы — выберите атрибуты для страницы товара
  • Настройка количества — установите лимит отображаемых атрибутов для каждого режима
  • Управление порядком — сортировка атрибутов по приоритету (меньше число = выше в списке)
  • Кастомные лейблы — задайте собственные названия для каждого атрибута
  • Единицы измерения — добавьте единицы измерения (кг, см, м² и т.д.)

Фильтры по атрибутам

  • Шорткод для фильтров[vpwc_attribute_filters] для вывода фильтров в сайдбаре
  • Настройка атрибутов для фильтров — выберите, какие атрибуты использовать в фильтрах
  • Адаптивный дизайн — фильтры работают на всех устройствах

Автоматический вывод

  • Автоматический вывод на листинге — через хук woocommerce_after_shop_loop_item_title
  • Автоматический вывод на детальной странице — через хук woocommerce_single_product_summary
  • Настраиваемые приоритеты — можно изменить приоритет вывода через фильтры

Программный доступ

  • Функции для получения данныхvpwc_attr_pick(), vpwc_attr_term_names(), vpwc_attr_label()
  • Фильтры для кастомизацииvpwc_attributes_loop_output, vpwc_attributes_single_output
  • Гибкая интеграция — легко интегрируется с любой темой

📋 Требования

  • WordPress: 5.0 или выше
  • PHP: 7.4 или выше
  • WooCommerce: Должен быть установлен и активирован
  • Права доступа: Администратор для настройки

📦 Установка

Шаги установки

  1. Скачайте плагин

    # Скопируйте папку woocomerce-attribute в wp-content/plugins/
  2. Активируйте плагин

    • Перейдите в ПлагиныУстановленные плагины
    • Найдите "VPWC Attribute Display Settings"
    • Нажмите Активировать
  3. Проверьте зависимости

    • Убедитесь, что WooCommerce установлен и активирован
    • Плагин автоматически проверит наличие WooCommerce
  4. Настройте плагин

    • Перейдите в WooCommerceАтрибуты: вывод
    • Настройте отображение атрибутов

🎯 Быстрый старт

Настройка в админ-панели

  1. Перейдите в настройки

    • WooCommerceАтрибуты: вывод
  2. Настройте лимиты

    • Установите количество атрибутов для листинга
    • Установите количество атрибутов для детальной страницы
  3. Выберите атрибуты

    • Отметьте атрибуты для отображения на листинге
    • Отметьте атрибуты для отображения на детальной странице
    • Отметьте атрибуты для использования в фильтрах
  4. Настройте порядок

    • Установите порядок сортировки (меньше число = выше в списке)
  5. Добавьте кастомные лейблы и единицы (опционально)

    • Укажите кастомные названия для атрибутов
    • Добавьте единицы измерения
  6. Сохраните настройки

Использование шорткода для фильтров

// В сайдбаре или на странице
[vpwc_attribute_filters]

💡 Использование

Настройка в админ-панели

Основные настройки

  1. Лимиты атрибутов

    • Лимит для листинга — максимальное количество атрибутов на странице каталога
    • Лимит для детальной страницы — максимальное количество атрибутов на странице товара
  2. Выбор атрибутов

    • Отметьте атрибуты для отображения на листинге
    • Отметьте атрибуты для отображения на детальной странице
    • Отметьте атрибуты для использования в фильтрах
  3. Порядок сортировки

    • Установите число для каждого атрибута (меньше = выше в списке)
    • Атрибуты сортируются по возрастанию
  4. Кастомные настройки

    • Кастомный лейбл — собственное название атрибута
    • Единица измерения — единица для значений (кг, см, м² и т.д.)

Автоматический вывод

Плагин автоматически выводит атрибуты через хуки WordPress:

  • Листинг: woocommerce_after_shop_loop_item_title (приоритет 15)
  • Детальная страница: woocommerce_single_product_summary (приоритет 25)

Шорткод для фильтров

Используйте шорткод [vpwc_attribute_filters] для вывода фильтров по атрибутам:

// В сайдбаре
[vpwc_attribute_filters]

// В шаблоне
echo do_shortcode('[vpwc_attribute_filters]');

Программный вывод в теме

Вывод на листинге

global $product;
if (function_exists('vpwc_attr_pick')) {
    $limits = vpwc_attr_limits_get();
    $attrs = vpwc_attr_pick('loop', $limits['loop_limit']);

    if ($attrs) {
        echo '<div class="product-attributes-loop">';
        foreach ($attrs as $a) {
            $names = vpwc_attr_term_names($product->get_id(), $a['tax']);
            if ($names) {
                $label = vpwc_attr_label($a['tax'], $a['custom_label']);
                $val = implode(', ', $names);
                if (!empty($a['unit'])) {
                    $val .= ' ' . $a['unit'];
                }
                echo '<div class="attr-item">';
                echo '<strong>' . esc_html($label) . ':</strong> ';
                echo '<span>' . esc_html($val) . '</span>';
                echo '</div>';
            }
        }
        echo '</div>';
    }
}

Вывод на детальной странице

global $product;
if (function_exists('vpwc_attr_pick')) {
    $limits = vpwc_attr_limits_get();
    $attrs = vpwc_attr_pick('single', $limits['single_limit']);

    if ($attrs) {
        echo '<div class="product-attributes-single">';
        foreach ($attrs as $a) {
            $names = vpwc_attr_term_names($product->get_id(), $a['tax']);
            if ($names) {
                $label = vpwc_attr_label($a['tax'], $a['custom_label']);
                $val = implode(', ', $names);
                if (!empty($a['unit'])) {
                    $val .= ' ' . $a['unit'];
                }
                echo '<div class="attr-item">';
                echo '<span class="attr-label">' . esc_html($label) . ':</span> ';
                echo '<span class="attr-value">' . esc_html($val) . '</span>';
                echo '</div>';
            }
        }
        echo '</div>';
    }
}

Получение значений атрибута

global $product;
$product_id = $product->get_id();
$taxonomy = 'pa_color'; // например, цвет

$values = vpwc_attr_term_names($product_id, $taxonomy);
// Вернет массив: ['Красный', 'Синий']

Отключение стандартного вывода

Если нужно изменить место вывода, можно отключить стандартные хуки:

// Отключить стандартный вывод
remove_action('woocommerce_after_shop_loop_item_title', 'vpwc_attr_render_loop', 15);
remove_action('woocommerce_single_product_summary', 'vpwc_attr_render_single', 25);

// Добавить свой вывод в нужном месте
add_action('woocommerce_shop_loop_item_title', 'my_custom_attr_display', 20);
function my_custom_attr_display() {
    // Ваш код вывода
}

🔌 API и функции

vpwc_attr_pick($mode, $limit)

Получить список атрибутов для отображения.

Параметры:

  • $mode (string) — Режим: 'loop', 'single' или 'filter'
  • $limit (int) — Максимальное количество атрибутов

Возвращает: Массив атрибутов с настройками

Пример:

$attrs = vpwc_attr_pick('loop', 3);
// Вернет массив с 3 атрибутами для листинга

vpwc_attr_term_names($product_id, $taxonomy)

Получить значения атрибута для товара.

Параметры:

  • $product_id (int) — ID товара
  • $taxonomy (string) — Название таксономии (например, 'pa_color')

Возвращает: Массив названий терминов

Пример:

$values = vpwc_attr_term_names(123, 'pa_color');
// Вернет: ['Красный', 'Синий']

vpwc_attr_label($taxonomy, $custom_label = '')

Получить лейбл атрибута.

Параметры:

  • $taxonomy (string) — Название таксономии
  • $custom_label (string) — Кастомный лейбл (опционально)

Возвращает: Строка с лейблом

Пример:

$label = vpwc_attr_label('pa_color', 'Цвет товара');
// Вернет: 'Цвет товара' или стандартное название атрибута

vpwc_attr_limits_get()

Получить настройки лимитов.

Возвращает: Массив с ключами 'loop_limit' и 'single_limit'

Пример:

$limits = vpwc_attr_limits_get();
// Вернет: ['loop_limit' => 3, 'single_limit' => 5]

🎨 Хуки и фильтры

Фильтры для кастомизации вывода

vpwc_attributes_loop_output

Фильтр для изменения вывода атрибутов на листинге.

add_filter('vpwc_attributes_loop_output', function($output, $attrs, $product) {
    // Кастомный вывод
    return '<div class="my-custom-attributes">' . $output . '</div>';
}, 10, 3);

vpwc_attributes_single_output

Фильтр для изменения вывода атрибутов на детальной странице.

add_filter('vpwc_attributes_single_output', function($output, $attrs, $product) {
    // Кастомный вывод
    return '<div class="my-custom-attributes">' . $output . '</div>';
}, 10, 3);

vpwc_attributes_limit

Фильтр для изменения лимита атрибутов.

add_filter('vpwc_attributes_limit', function($limit, $mode) {
    if ($mode === 'loop') {
        return 5; // Показывать 5 атрибутов на листинге
    }
    return $limit;
}, 10, 2);

Хуки WooCommerce

Плагин использует стандартные хуки WooCommerce:

  • woocommerce_after_shop_loop_item_title — для вывода на листинге (приоритет 15)
  • woocommerce_single_product_summary — для вывода на детальной странице (приоритет 25)

🎨 Стилизация

Плагин использует следующие CSS классы для стилизации:

Стили для листинга

/* Контейнер атрибутов на листинге */
.vpwc-attrs--loop {
  margin: 10px 0;
  font-size: 14px;
}

.vpwc-attrs--loop .vpwc-attr {
  margin: 5px 0;
  display: flex;
  align-items: center;
}

.vpwc-attrs--loop .vpwc-attr-label {
  font-weight: 600;
  margin-right: 5px;
}

.vpwc-attrs--loop .vpwc-attr-value {
  color: #666;
}

Стили для детальной страницы

/* Контейнер атрибутов на детальной странице */
.vpwc-attrs--single {
  margin: 20px 0;
  padding: 15px;
  background: #f9f9f9;
  border-radius: 4px;
}

.vpwc-attrs--single .vpwc-attr {
  margin: 8px 0;
  padding-bottom: 8px;
  border-bottom: 1px solid #eee;
  display: flex;
  justify-content: space-between;
}

.vpwc-attrs--single .vpwc-attr:last-child {
  border-bottom: none;
}

.vpwc-attrs--single .vpwc-attr-label {
  font-weight: 600;
  color: #333;
}

.vpwc-attrs--single .vpwc-attr-value {
  color: #666;
}

Стили для фильтров

/* Контейнер фильтров */
.vpwc-filters {
  margin: 20px 0;
}

.vpwc-filter {
  margin-bottom: 15px;
}

.vpwc-filter-label {
  font-weight: 600;
  margin-bottom: 5px;
  display: block;
}

.vpwc-filter-options {
  list-style: none;
  padding: 0;
  margin: 0;
}

.vpwc-filter-option {
  margin: 5px 0;
}

.vpwc-filter-option input[type="checkbox"] {
  margin-right: 5px;
}

📁 Структура проекта

woocomerce-attribute/
├── vpwc-attributes-display.php  # Главный файл плагина
├── includes/                    # Основные классы
│   ├── class-vpwc-attributes.php           # Главный класс плагина
│   └── class-vpwc-attributes-settings.php # Функции настроек
├── admin/                      # Админ-панель
│   └── class-vpwc-attributes-admin.php    # Интерфейс админ-панели
├── public/                     # Фронтенд функциональность
│   └── class-vpwc-attributes-public.php    # Вывод атрибутов
├── languages/                  # Файлы переводов
│   └── vpwc-attributes-ru_RU.po
│   └── vpwc-attributes-ru_RU.mo
├── README.md                   # Документация
├── CODE_REVIEW.md              # Отчет о проверке кода
└── .gitignore                  # Git ignore файл

🔒 Безопасность

Плагин следует стандартам безопасности WordPress:

  • Проверка прав доступаcurrent_user_can() для всех административных функций
  • Проверка nonce — для всех форм в админ-панели
  • Санитизация данных — все входные данные санитизируются через sanitize_text_field(), sanitize_textarea_field()
  • Экранирование вывода — все выходные данные экранируются через esc_html(), esc_attr(), esc_url()
  • Валидация данных — проверка типов данных и значений
  • Защита от SQL Injection — использование $wpdb->prepare() для всех запросов

✅ Совместимость

Проверенная совместимость

  • WordPress: 5.0, 5.5, 5.9, 6.0, 6.1, 6.2, 6.3, 6.4
  • PHP: 7.4, 8.0, 8.1, 8.2, 8.3, 8.4
  • WooCommerce: 5.0+, 6.0+, 7.0+, 8.0+

Стандарты кодирования

  • WordPress Coding Standards (WPCS) — полное соответствие
  • PHP 8.2+ совместимость — типизация параметров и возвращаемых значений
  • PHPDoc комментарии — полная документация всех методов
  • Интернационализация — все строки обернуты в функции перевода

Подробный отчет о проверке кода см. в CODE_REVIEW.md

🐛 Отладка

Включение отладки

// В wp-config.php
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);

Проверка работы плагина

  1. Убедитесь, что WooCommerce активирован
  2. Проверьте, что атрибуты созданы в WooCommerce
  3. Проверьте настройки плагина в админ-панели
  4. Проверьте вывод на фронтенде

📝 Changelog

1.0.0

  • Первый релиз
  • Управление выводом атрибутов на листинге и детальной странице
  • Настройка количества и порядка атрибутов
  • Кастомные лейблы и единицы измерения
  • Шорткод для фильтров
  • Рефакторинг кода по стандартам WordPress
  • Полная совместимость с PHP 8.2+
  • Соответствие WordPress Coding Standards

🤝 Поддержка

Для вопросов и предложений создавайте issue в репозитории проекта.

📄 Лицензия

GPL v2 or later

Copyright (c) 2024 VP

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

👤 Автор

VP


Примечание: Плагин требует установленного и активированного WooCommerce для работы.