VPWC Attribute Display Settings
Гибкий WordPress-плагин для управления выводом атрибутов WooCommerce: листинг, карточка товара и фильтры — всё настраивается из админки.
by VP · github.com/va-proger/wordpress-woocommerce-attributs · website
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 на листинге товаров, детальной странице и в фильтрах с полным контролем из админ-панели.
📋 Содержание
- Описание
- Основные возможности
- Требования
- Установка
- Быстрый старт
- Использование
- API и функции
- Хуки и фильтры
- Стилизация
- Структура проекта
- Безопасность
- Совместимость
- Лицензия
📖 Описание
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: Должен быть установлен и активирован
- Права доступа: Администратор для настройки
📦 Установка
Шаги установки
-
Скачайте плагин
# Скопируйте папку woocomerce-attribute в wp-content/plugins/ -
Активируйте плагин
- Перейдите в Плагины → Установленные плагины
- Найдите "VPWC Attribute Display Settings"
- Нажмите Активировать
-
Проверьте зависимости
- Убедитесь, что WooCommerce установлен и активирован
- Плагин автоматически проверит наличие WooCommerce
-
Настройте плагин
- Перейдите в WooCommerce → Атрибуты: вывод
- Настройте отображение атрибутов
🎯 Быстрый старт
Настройка в админ-панели
-
Перейдите в настройки
- WooCommerce → Атрибуты: вывод
-
Настройте лимиты
- Установите количество атрибутов для листинга
- Установите количество атрибутов для детальной страницы
-
Выберите атрибуты
- Отметьте атрибуты для отображения на листинге
- Отметьте атрибуты для отображения на детальной странице
- Отметьте атрибуты для использования в фильтрах
-
Настройте порядок
- Установите порядок сортировки (меньше число = выше в списке)
-
Добавьте кастомные лейблы и единицы (опционально)
- Укажите кастомные названия для атрибутов
- Добавьте единицы измерения
-
Сохраните настройки
Использование шорткода для фильтров
// В сайдбаре или на странице
[vpwc_attribute_filters]
💡 Использование
Настройка в админ-панели
Основные настройки
-
Лимиты атрибутов
- Лимит для листинга — максимальное количество атрибутов на странице каталога
- Лимит для детальной страницы — максимальное количество атрибутов на странице товара
-
Выбор атрибутов
- Отметьте атрибуты для отображения на листинге
- Отметьте атрибуты для отображения на детальной странице
- Отметьте атрибуты для использования в фильтрах
-
Порядок сортировки
- Установите число для каждого атрибута (меньше = выше в списке)
- Атрибуты сортируются по возрастанию
-
Кастомные настройки
- Кастомный лейбл — собственное название атрибута
- Единица измерения — единица для значений (кг, см, м² и т.д.)
Автоматический вывод
Плагин автоматически выводит атрибуты через хуки 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);
Проверка работы плагина
- Убедитесь, что WooCommerce активирован
- Проверьте, что атрибуты созданы в WooCommerce
- Проверьте настройки плагина в админ-панели
- Проверьте вывод на фронтенде
📝 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 для работы.