Пишем ИИ агента про классификацию продуктов в каталоге WordPress & WooCommerce
26 февраля 2025
Использование ИИ для классификации продуктов в WordPress и WooCommerce — это мощный инструмент для автоматизации сайта и улучшения контента.
Подготовка данных
Для успешной классификации продуктов необходимо подготовить качественный набор данных, включающий:
- Описания продуктов
- Существующие категории
- Метаданные товаров
- Теги и атрибуты
используем:
Алгоритм классификации
Процесс классификации включает несколько этапов:
- Предварительная обработка текста (токенизация, удаление стоп-слов)
- Векторизация текстовых данных
- Применение методов машинного обучения
- Валидация результатов
Все результаты можно видеть через журнал работы

Технические особенности реализации
При интеграции с WordPress необходимо учитывать:
- Совместимость с WordPress REST API
- Оптимизацию производительности
- Масштабируемость решения
- Безопасность данных
Преимущества использования ИИ для классификации
Внедрение ИИ-классификации даёт следующие преимущества:
- Автоматизация рутинных задач категоризации
- Повышение точности классификации
- Экономия времени администраторов магазина
- Улучшение пользовательского опыта покупателей
Возможные проблемы и их решения
При внедрении системы могут возникнуть следующие сложности:
- Неточности в классификации — решается через обучение на большем количестве данных
- Производительность — оптимизация через кэширование
- Интеграция — использование стандартных WordPress хуков и фильтров
Использование ИИ для классификации продуктов в WordPress и WooCommerce — это мощный инструмент для автоматизации работы интернет-магазина. При правильной реализации он способен значительно упростить управление каталогом товаров и улучшить пользовательский опыт.
Итого
Это очередной бот который экономит много времени и денег.
code
<?php
namespace App\AIBots\AutoSelectTagsForProducts;
use function AIPress\prompt;
use WP_CLI;
/**
* Классифиактор продуктов в каталоге по таксономии product_tag
*/
const ACTION = 'app_ai_select_tags_for_product';
add_action(ACTION, function ($product_id) {
if (empty($product_id)) {
return;
}
$id = $product_id;
$out = process_json($id);
$out_сustom = process_custom($id);
if($out_сustom){
$out_сustom = print_r($out_сustom, true);
update_post_meta($id, 'tags_suggestions_addons', $out_сustom);
}
if ($out) {
update_post_meta($id, 'tags_suggestions', json_encode($out, JSON_UNESCAPED_UNICODE));
}
// wc_get_logger()->info($product_id . ' - app_ai_select_tags_for_product - ' . print_r($out, true));
update_post_meta($id, 'product_tags_processed', true);
wc_get_logger()->info('app_ai_select_tags_for_product - ' . wc_get_product($id)->get_name(), [
'source' => 'app-ai-bots',
'link' => get_edit_post_link($product_id),
'product_id' => $id,
'out' => $out,
]);
});
add_action('init', function () {
if (as_has_scheduled_action(ACTION)) {
return;
}
$pid = get_next_product_id();
if (empty($pid)) {
return;
}
$args = [
'product_id' => $pid,
];
as_schedule_single_action(time() + HOUR_IN_SECONDS / 6, ACTION, $args, 'app', true);
});
function get_next_product_id()
{
$product_next = get_posts([
'post_type' => 'product',
'posts_per_page' => 1,
'orderby' => 'post_date',
'order' => 'DESC',
'fields' => 'ids',
'meta_query' => [
[
'key' => 'product_tags_processed',
'compare' => 'NOT EXISTS',
],
],
]);
return $product_next[0] ?? null;
}
function process_custom($product_id = null){
if (empty($product_id)) {
return null;
}
$product = wc_get_product($product_id);
if (empty($product)) {
return null;
}
$prompt = 'Изучи информацию о продукте: ' . $product->get_name() . '.';
$prompt .= PHP_EOL;
$prompt .= "Описание продукта: " . $product->get_description();
$prompt .= PHP_EOL;
$prompt .= "Затем изучи список возможных категорий: " . get_json_list();
$prompt .= PHP_EOL;
$prompt .= "Верни результат тоже строго в формате через запятую.";
$out = prompt($prompt);
return $out;
}
function process_json($product_id = null)
{
if (empty($product_id)) {
return null;
}
$product = wc_get_product($product_id);
if (empty($product)) {
return null;
}
$prompt = 'Изучи информацию о продукте: ' . $product->get_name() . '.';
$prompt .= PHP_EOL;
$prompt .= "Описание продукта: " . $product->get_description();
$prompt .= PHP_EOL;
$prompt .= "Затем изучи список возможных категорий в формате JSON: " . get_json_list();
$prompt .= PHP_EOL;
$prompt .= "Верни результат тоже строго в формате JSON без лишних слов и разметок.";
$params = [
'model' => 'deepseek/deepseek-chat',
'messages' => [
[
'role' => 'system',
'content' => 'You are a helpful assistant who understands services, applications and software for business and automation, and speaks Russian.'
],
[
'role' => 'user',
'content' => $prompt
],
]
];
$json = prompt($prompt, $params);
$data = json_decode($json, true);
if (is_array($data)) {
return $data;
} else {
return null;
}
}
function get_json_list()
{
$product_tags = get_terms([
'taxonomy' => 'product_tag',
]);
$product_tags = array_map(function ($term) {
return [
'id' => $term->term_id,
'slug' => $term->slug,
'name' => $term->name,
];
}, $product_tags);
$product_tags = json_encode($product_tags, JSON_UNESCAPED_UNICODE);
return $product_tags;
}