Если вы используете YITH WooCommerce Wishlist для создания вишлистов, но вам не хватает возможности просматривать списки пользователей в админке, эта статья для вас! Расскажу, как я решил эту проблему, создав бесплатный аддон WPLife Wishlist Admin Addon, и как его установить на ваш сайт.
❓ Зачем я создал этот плагин?
Я часто рекомендую клиентам YITH WooCommerce Wishlist — это удобный и быстрый плагин. Однако в бесплатной версии нет главной функции для администраторов — просмотра всех списков желаний, созданных пользователями. Платная версия решает проблему, но:
- Не всем подходит цена — Сколько стоит плагин я не знаю, но кому-то и 1$ жалко для просмотра списков.
- Доступ для РФ — автор плагина из Украины, и его сайт заблокирован для россиян.
Один из моих клиентов столкнулся с этой проблемой. Вместо поиска взломанных версий nulled, я решил написать минималистичный аддон, который добавляет в админку WooCommerce недостающую функцию.
🔍 Что умеет WPLife Wishlist Admin Addon
Аддон не заменяет YITH Wishlist, а дополняет его:
✅ Показывает все списки желаний в разделе админки WooCommerce → «Списки желаний».
✅ Нулевая нагрузка — код написан максимально просто, без лишних запросов.
✅ Совместимость с бесплатной версией YITH Wishlist, WordPress 5.6+ и WooCommerce 5.0+.
✅ Бесплатно и открыто — никаких платежей, подписок или скрытых функций.
После установки в админке WP появится меню «Списки желаний». Там вы увидите таблицу со всеми списками: название списка, пользователь, количество товаров, дата создания и т.д.
👉 Важно: Если вам нужен только мониторинг списков, мой аддон — идеальное решение. Для сложных задач (аналитика, экспорт) используйте официальный Premium.
📥 Установка за 3 шага
- Создайте папку
wplife-wishlist-addon
в/wp-content/plugins/
. - Добавьте файл
index.php
и вставьте в него [код]. - Активируйте плагин через раздел «Плагины» в WordPress.
Требования:
- Должен быть установлен YITH WooCommerce Wishlist (бесплатная версия).
- WordPress и WooCommerce последних версий.
❓ Частые вопросы
Q: Аддон будет работать, если обновится YITH Wishlist?
A: Да, если разработчики не изменят структуру таблиц в базе данных.
Q: Как удалить плагин?
A: Деактивируйте его в разделе «Плагины» и удалите папку wplife-wishlist-addon
.
Q: Можно ли добавить экспорт списков?
A: Пока нет, но если будет запрос от пользователей — реализую. Пишите в комментарии!
💡 Почему я сделал это бесплатно?
- Для сообщества — хочу, чтобы у всех был доступ к базовому функционалу.
- Безопасность — никаких взломанных плагинов с вирусами.
- Простота — иногда меньше = лучше.
🚀 Попробуйте сами!
Скопируйте код, который ниже. Если у вас есть идеи для улучшения — напишите мне в комментариях к этой статье.
Код плагина:
/*
Plugin Name: WPLife Wishlist Admin Addon
Plugin URI: https://wplife.ru/wplife-wishlist-admin
Description: Показывает списки желаний в админке. Для работы требуется бесплатный плагин YITH WooCommerce Wishlist.
Version: 1.0
Author: Alexander Parkhomenko
Author URI: https://wplife.ru
License: GPL2
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Text Domain: wplife-wishlist-addon
Domain Path: /lang
*/
// Добавление меню админки
add_action('admin_menu', 'wplife_wl_admin_menu');
function wplife_wl_admin_menu() {
add_menu_page(
'Списки желаний',
'Списки желаний',
'manage_options',
'wplife_wl_admin_list',
'wplife_wl_admin_list_page',
'dashicons-heart',
20
);
}
// Страница админки
function wplife_wl_admin_list_page() {
global $wpdb;
// Таблицы
$table_lists = $wpdb->prefix . 'yith_wcwl_lists';
$table_wishlist = $wpdb->prefix . 'yith_wcwl';
$table_users = $wpdb->users;
// Получение данных из таблиц
$lists = $wpdb->get_results("SELECT * FROM {$table_lists}", ARRAY_A);
// Вывод данных в таблицу
echo '<div class="wrap">';
echo '<h1>Списки желаний</h1>';
// Вывод таблицы со списками
echo '<table class="widefat">';
echo '<thead>
<tr>
<th>Имя</th>
<th>Имя Пользователя</th>
<th>Privacy</th>
<th>Количество</th>
<th>Дата</th>
<th>Срок действия</th>
</tr>
</thead>';
echo '<tbody>';
foreach ($lists as $list) {
$user = get_user_by('id', $list['user_id']);
$username = $user ? $user->user_login : 'Гость';
$privacy = $list['wishlist_privacy'] ? 'Приватный' : 'Публичный';
// Получение количества товаров в списке
$item_count = $wpdb->get_var($wpdb->prepare(
"SELECT COUNT(*) FROM {$wpdb->prefix}yith_wcwl WHERE wishlist_id = %d",
$list['ID']
));
// Обработка случая, когда количество может оказаться NULL
$item_count = $item_count ? $item_count : 0;
// Получение кликабельного имени списка
$wishlist_name = !empty($list['wishlist_name']) ? esc_html($list['wishlist_name']) : 'Мой список';
$wishlist_link = get_site_url() . '/wishlist/view/' . $list['wishlist_token'];
echo '<tr>';
echo '<td><a href="' . esc_url($wishlist_link) . '" target="_blank">' . $wishlist_name . '</a></td>';
echo '<td>' . esc_html($username) . '</td>';
echo '<td>' . esc_html($privacy) . '</td>';
// Кликабельное значение для количества товаров
echo '<td><a href="#" class="toggle-items" data-wishlist-id="' . esc_attr($list['ID']) . '">' . esc_html($item_count) . '</a></td>';
echo '<td>' . esc_html($list['dateadded']) . '</td>';
echo '<td>' . esc_html($list['expiration']) . '</td>';
echo '</tr>';
// Запрос для получения товаров только для отображения под строкой
if ($item_count > 0) {
$items = $wpdb->get_results($wpdb->prepare(
"SELECT prod_id,original_price FROM {$table_wishlist} WHERE wishlist_id = %d",
$list['ID']
), ARRAY_A);
echo '<tr class="item-list" style="display: none;"><td colspan="5">';
echo '<h4>Товары в списке желаний:</h4>';
echo '<ul>';
foreach ($items as $item) {
$product = wc_get_product($item['prod_id']);
$original_price = $item['original_price'];
$price = $product->get_regular_price();
if ($product) {
$product_link = esc_url(get_permalink($product->get_id())); // Получаем ссылку на продукт
echo '<li>';
echo '<a href="' . $product_link . '" target="_blank">' . esc_html($product->get_name()) . '</a> '; // Название
echo 'Цена в списке: ' . $original_price . ' '; // Цена из списка желаний
echo 'Цена текущая: ' . $price . ' '; // Цена из списка желаний
echo '</li>';
}
}
echo '</ul>';
echo '</td></tr>';
}
}
echo '</tbody>';
echo '</table>';
echo '</div>';
}
// Добавление CSS для стилей
add_action('admin_enqueue_scripts', function() {
echo '<style>
.item-list td {
padding-left: 30px; /* Отступ для подстроки с товарами */
background-color: #f9f9f9; /* Цвет фона для подстроки */
}
.item-list { display: none; } /* Скрыть по умолчанию */
.toggle-items:hover { cursor: pointer; color: blue; text-decoration: underline; }
</style>';
});
// Добавление скрипта для разворачивания/сворачивания списка товаров
add_action('admin_footer', function() {
?>
<script>
jQuery(document).ready(function($) {
$('.toggle-items').on('click', function(e) {
e.preventDefault();
var $itemListRow = $(this).closest('tr').next('.item-list');
$itemListRow.toggle(); // Переключение видимости
});
});
</script>
<?php
});
P.S. Если плагин вам помог — расскажите о нем в комментариях. Это вдохновляет на новые проекты!