'post' или иными типами) $args = [ 'post_type' => 'any', 'post_status' => 'publish', 'numberposts' => -1, ]; $posts = get_posts($args); $used_keywords = []; foreach ($posts as $p) { $k = get_post_meta($p->ID, $keyword_meta_key, true); if (!empty($k)) { // Приводим к нижнему регистру для унификации $used_keywords[] = mb_strtolower(trim($k)); } } // Удалим дубликаты $used_keywords = array_unique($used_keywords); return $used_keywords; } /** * Генерирует или получает ключевое слово для поста. * * @param string $post_topic Тема поста. * @param string $category_name Название категории. * @param string $selected_language Выбранный язык. * * @return string Сгенерированное или полученное ключевое слово. */ function ai_content_wizard_get_or_generate_keyword($post_topic, $category_name, $selected_language) { // Получаем текущую модель $text_model = ai_content_wizard_get_setting('ai_content_wizard_text_model') ?? ''; if (!is_string($text_model)) { $text_model = ''; } $text_model = trim($text_model); $is_openai_model = ai_content_wizard_is_openai_model($text_model); // Подключаем файлы для генерации ключевого слова (только для OpenAI) if ($is_openai_model) { require_once AI_CONTENT_WIZARD_PATH . 'includes/text-generation/seo-generation/openai/openai_generate_keyword.php'; } else { error_log('No valid OpenAI model found. Check the selected text model.'); return ''; } // Определяем API-ключ для OpenAI if ($is_openai_model) { $api_key = ai_content_wizard_get_setting('ai_content_wizard_api_key') ?? ''; } else { $api_key = ''; error_log('No valid OpenAI model found. API key is empty.'); } if (empty($api_key)) { error_log('API key is empty for the selected model.'); return ''; } // Получаем ID категории и проверяем настройки $category_id = 'category-' . get_cat_ID($category_name); $use_global_settings = ai_content_wizard_get_category_setting($category_id, 'use_global_settings', 1); $format = $use_global_settings ? ai_content_wizard_get_setting('ai_content_wizard_format', 'post') : ai_content_wizard_get_category_setting($category_id, 'format', 'post'); // Если ключевое слово уже передано в POST запросе, используем его if (!empty($_POST['keyword'])) { $posted_keyword = sanitize_text_field($_POST['keyword']); error_log("Keyword from POST request: '$posted_keyword'"); return $posted_keyword; } // Получаем список уже занятых ключевых слов $used_keywords = ai_content_wizard_get_used_keywords(); // массив строк в нижнем регистре // Генерируем ключевое слово с помощью функции для OpenAI if ($is_openai_model && function_exists('generate_keyword_openai')) { $recommended_keyword = generate_keyword_openai( $post_topic, $category_name, $selected_language, $api_key, $text_model, $format, $used_keywords ); } else { error_log('No valid function defined for OpenAI keyword generation.'); $recommended_keyword = ''; } // Если ключевое слово не сгенерировано, создаём его самостоятельно if (empty($recommended_keyword)) { $recommended_keyword = sanitize_text_field($post_topic) . '-' . strtolower(sanitize_text_field($category_name)); error_log("Default keyword used: '$recommended_keyword'"); } return $recommended_keyword; }