WordPress网站如何接入Gemini AI模型API实现自动内容生成
- Linkreate AI插件 文章
- 2025-08-29 09:41:09
- 27阅读
在当今内容创作需求日益增长的环境下,将WordPress网站与Gemini AI模型API集成已成为许多网站管理员的选择。这种集成能够实现自动化内容生成,大幅提升内容生产效率。下面我们将详细介绍如何完成这一集成过程。
获取Gemini API密钥
要开始集成过程,首先需要获取Google Gemini API的访问密钥。以下是具体步骤:
- 访问Google AI Studio网站(aistudio.google.com)
- 使用Google账户登录
- 导航至API密钥管理部分
- 创建新的API密钥
- 妥善保存生成的密钥,后续配置中需要使用
请注意,API密钥是敏感信息,应当妥善保管,不要在代码中直接暴露或在公共场合分享。Google目前提供了Gemini 2.5 Flash Image等模型,这些模型支持文本生成、图像处理等多种功能,可以满足不同类型的内容创作需求。
在WordPress中安装必要插件
WordPress本身不直接支持Gemini API调用,因此需要借助特定插件或自定义代码来实现集成。以下是两种主要方法:
方法一:使用现成的AI集成插件
WordPress插件市场中有一些支持AI集成的插件,虽然可能没有专门针对Gemini的插件,但许多通用AI插件支持自定义API端点:
- 登录WordPress后台
- 导航至"插件" > "安装插件"
- 搜索"AI Content Generator"或"OpenAI API"等关键词
- 选择评分高、更新频繁的插件安装并激活
- 在插件设置中配置Gemini API端点和密钥
方法二:自定义代码集成
对于需要更高定制性的网站,可以通过自定义代码实现集成。首先,需要在主题的functions.php文件中添加相关代码,或者创建自定义插件。
// 添加Gemini API集成功能
function gemini_api_integration() {
// 检查用户权限
if (!current_user_can('edit_posts')) {
return;
}
// 获取API密钥(建议存储在WordPress选项中)
$api_key = get_option('gemini_api_key');
// 设置API端点
$api_endpoint = 'https://generativelanguage.googleapis.com/v1beta/models/gemini-pro:generateContent';
// 构建请求参数
$prompt = "请根据以下主题生成一篇WordPress相关的文章:人工智能在内容创作中的应用";
$request_body = array(
'contents' => array(
array(
'parts' => array(
array('text' => $prompt)
)
)
)
);
// 发送API请求
$response = wp_remote_post(
$api_endpoint . '?key=' . $api_key,
array(
'headers' => array('Content-Type' => 'application/json'),
'body' => json_encode($request_body),
'timeout' => 30
)
);
// 处理响应
if (is_wp_error($response)) {
return 'API请求失败: ' . $response->get_error_message();
}
$body = wp_remote_retrieve_body($response);
$data = json_decode($body, true);
// 提取生成的内容
if (isset($data['candidates'][0]['content']['parts'][0]['text'])) {
return $data['candidates'][0]['content']['parts'][0]['text'];
} else {
return '无法解析API响应';
}
}
这段代码创建了一个基本函数,用于调用Gemini API生成内容。函数首先检查用户权限,然后从WordPress选项中获取API密钥,构建请求参数并发送API请求,最后处理并返回生成的内容。注意,实际使用时需要替换API端点以匹配您使用的具体Gemini模型版本。
创建自定义管理界面
为了方便使用,可以在WordPress后台创建一个管理界面,让用户能够输入提示词并生成内容:
// 添加管理菜单
function gemini_api_menu() {
add_menu_page(
'Gemini AI内容生成器',
'Gemini AI',
'manage_options',
'gemini-ai',
'gemini_ai_page_html',
'dashicons-edit-page'
);
}
add_action('admin_menu', 'gemini_api_menu');
// 管理页面
function gemini_ai_page_html() {
// 检查用户权限
if (!current_user_can('manage_options')) {
return;
}
?>
<?php
// 处理表单提交
if ($_SERVER['REQUEST_METHOD'] === 'POST' && !empty($_POST['gemini_prompt'])) {
$generated_content = generate_content_with_gemini($_POST['gemini_prompt'], $_POST['gemini_length']);
echo '';
echo '生成的内容:
';
echo '';
echo '';
echo '';
echo '';
}
?>
document.getElementById('copy-content').addEventListener('click', function() {
var content = document.querySelector('.generated-content textarea');
content.select();
document.execCommand('copy');
alert('内容已复制到剪贴板');
});
document.getElementById('create-post').addEventListener('click', function() {
var content = document.querySelector('.generated-content textarea').value;
var title = prompt('请输入文章标题:');
if (title) {
var data = {
'action': 'create_post_from_gemini',
'title': title,
'content': content,
'nonce': ''
};
jQuery.post(ajaxurl, data, function(response) {
if (response.success) {
alert('文章创建成功!');
window.location.href = response.data.edit_link;
} else {
alert('文章创建失败:' + response.data);
}
});
}
});
$title,
'post_content' => $content,
'post_status' => 'draft',
'post_author' => get_current_user_id(),
'post_type' => 'post'
));
if (is_wp_error($post_id)) {
wp_send_json_error($post_id->get_error_message());
} else {
wp_send_json_success(array(
'edit_link' => get_edit_post_link($post_id)
));
}
}
add_action('wp_ajax_create_post_from_gemini', 'handle_create_post_from_gemini');
这段代码创建了一个完整的管理界面,包括表单输入、内容生成显示和文章创建功能。用户可以输入提示词和期望的内容长度,提交后系统会调用Gemini API生成内容,并提供复制和创建文章的选项。创建文章的功能通过AJAX实现,用户体验更加流畅。
实现内容生成函数
上面的代码引用了一个`generate_content_with_gemini`函数,下面是这个函数的实现:
function generate_content_with_gemini($prompt, $length = 500) {
$api_key = get_option('gemini_api_key');
if (empty($api_key)) {
return '请先在设置中配置Gemini API密钥';
}
// 根据长度调整提示词
$full_prompt = $prompt . "。请生成一篇约" . $length . "字的文章,要求内容原创、结构清晰、语言流畅。";
$api_endpoint = 'https://generativelanguage.googleapis.com/v1beta/models/gemini-pro:generateContent';
$request_body = array(
'contents' => array(
array(
'parts' => array(
array('text' => $full_prompt)
)
)
),
'generationConfig' => array(
'temperature' => 0.7,
'topK' => 40,
'topP' => 0.95,
'maxOutputTokens' => intval($length 1.5), // 考虑到token与汉字的比例
'stopSequences' => array()
)
);
$response = wp_remote_post(
$api_endpoint . '?key=' . $api_key,
array(
'headers' => array('Content-Type' => 'application/json'),
'body' => json_encode($request_body),
'timeout' => 60
)
);
if (is_wp_error($response)) {
return 'API请求失败: ' . $response->get_error_message();
}
$body = wp_remote_retrieve_body($response);
$data = json_decode($body, true);
if (isset($data['candidates'][0]['content']['parts'][0]['text'])) {
return $data['candidates'][0]['content']['parts'][0]['text'];
} else {
return '内容生成失败,请重试或检查API配置';
}
}
这个函数接收提示词和期望长度作为参数,构建完整的API请求,包括生成配置参数如温度、topK、topP等,这些参数影响生成内容的随机性和质量。函数发送请求后解析响应并返回生成的内容。如果出现错误,会返回相应的错误信息。
添加API配置选项
为了方便用户管理API密钥和其他设置,我们可以添加一个设置页面:
// 添加设置菜单
function gemini_api_settings_menu() {
add_submenu_page(
'gemini-ai',
'Gemini API设置',
'设置',
'manage_options',
'gemini-api-settings',
'gemini_api_settings_page_html'
);
}
add_action('admin_menu', 'gemini_api_settings_menu', 20);
// 注册设置
function gemini_api_register_settings() {
register_setting('gemini_api_settings', 'gemini_api_key');
register_setting('gemini_api_settings', 'gemini_model', array(
'type' => 'string',
'default' => 'gemini-pro',
'sanitize_callback' => 'sanitize_text_field'
));
register_setting('gemini_api_settings', 'gemini_temperature', array(
'type' => 'number',
'default' => 0.7,
'sanitize_callback' => 'floatval'
));
}
add_action('admin_init', 'gemini_api_register_settings');
// 设置页面
function gemini_api_settings_page_html() {
if (!current_user_can('manage_options')) {
return;
}
?>
Gemini API设置
<input type="password" id="gemini_api_key" name="gemini_api_key"
value="" class="regular-text">
从Google AI Studio获取的API密钥
<option value="gemini-pro" >
Gemini Pro
<option value="gemini-1.5-pro" >
Gemini 1.5 Pro
<option value="gemini-1.5-flash" >
Gemini 1.5 Flash
选择要使用的Gemini模型版本
<input type="range" id="gemini_temperature" name="gemini_temperature"
min="0" max="1" step="0.1"
value="">
控制生成内容的创造性(0为确定性,1为高度创造性)
document.getElementById('gemini_temperature').addEventListener('input', function() {
document.getElementById('temperature-value').textContent = this.value;
});
<?php
}
这段代码创建了一个完整的设置页面,允许用户配置API密钥、选择Gemini模型版本和调整创造性参数。设置通过WordPress的设置API保存,确保安全性和持久性。页面还包括一个滑块控件,让用户可以直观地调整创造性参数。
实现定时自动内容生成
除了手动生成内容,我们还可以设置定时任务,自动生成和发布内容:
// 添加定时任务
function schedule_gemini_content_generation() {
if (!wp_next_scheduled('generate_gemini_content_event')) {
wp_schedule_event(time(), 'daily', 'generate_gemini_content_event');
}
}
add_action('wp', 'schedule_gemini_content_generation');
// 定时任务回调函数
function generate_gemini_content() {
$api_key = get_option('gemini_api_key');
if (empty($api_key)) {
return;
}
// 获取预设的主题列表
$topics = get_option('gemini_auto_topics', array(
'人工智能在WordPress开发中的应用',
'如何优化WordPress网站性能',
'WordPress安全最佳实践',
'SEO优化与WordPress',
'WordPress插件开发入门'
));
// 随机选择一个主题
$topic = $topics[array_rand($topics)];
// 生成内容
$content = generate_content_with_gemini($topic, 800);
if (strpos($content, '失败') === false) {
// 创建文章
$post_id = wp_insert_post(array(
'post_title' => $topic,
'post_content' => $content,
'post_status' => 'draft', // 可以改为'publish'直接发布
'post_author' => 1, // 管理员ID
'post_type' => 'post',
'post_category' => array(1) // 默认分类
));
if (!is_wp_error($post_id)) {
// 可选:发送通知邮件
$admin_email = get_option('admin_email');
$subject = '新内容已生成:' . $topic;
$message = "已根据主题 "$topic" 生成新文章,请查看并编辑后发布。nn";
$message .= "编辑链接: " . get_edit_post_link($post_id);
wp_mail($admin_email, $subject, $message);
}
}
}
add_action('generate_gemini_content_event', 'generate_gemini_content');
// 添加自动生成设置
function gemini_auto_generation_settings() {
add_settings_field(
'gemini_auto_topics',
'自动生成主题列表',
'gemini_auto_topics_callback',
'gemini_api_settings',
'gemini_api_settings_section'
);
register_setting('gemini_api_settings', 'gemini_auto_topics');
}
add_action('admin_init', 'gemini_auto_generation_settings');
function gemini_auto_topics_callback() {
$topics = get_option('gemini_auto_topics', array());
?>
每行输入一个主题,系统将随机选择主题生成内容
<?php
}
这段代码实现了定时自动内容生成功能。首先,它设置了一个每日执行的定时任务,任务会从预设的主题列表中随机选择一个主题,使用Gemini API生成内容,然后创建一篇新文章。文章默认保存为草稿状态,管理员可以审核后发布。系统还会发送通知邮件给管理员。同时,代码还添加了设置选项,让用户可以自定义主题列表。
处理API限制和错误
在使用Gemini API时,可能会遇到各种限制和错误情况,我们需要妥善处理这些问题:
// 增强版内容生成函数,包含错误处理
function generate_content_with_gemini_enhanced($prompt, $length = 500) {
$api_key = get_option('gemini_api_key');
if (empty($api_key)) {
return array('success' => false, 'message' => '请先在设置中配置Gemini API密钥');
}
// 检查API调用频率限制
$last_call = get_option('gemini_last_api_call', 0);
$min_interval = 1; // 最小调用间隔(秒)
if (time() - $last_call false, 'message' => 'API调用过于频繁,请稍后再试');
}
// 记录API调用时间
update_option('gemini_last_api_call', time());
// 记录API调用次数(用于配额管理)
$call_count = intval(get_option('gemini_api_call_count', 0));
update_option('gemini_api_call_count', $call_count + 1);
$full_prompt = $prompt . "。请生成一篇约" . $length . "字的文章,要求内容原创、结构清晰、语言流畅。";
$model = get_option('gemini_model', 'gemini-pro');
$temperature = floatval(get_option('gemini_temperature', 0.7));
$api_endpoint = 'https://generativelanguage.googleapis.com/v1beta/models/' . $model . ':generateContent';
$request_body = array(
'contents' => array(
array(
'parts' => array(
array('text' => $full_prompt)
)
)
),
'generationConfig' => array(
'temperature' => $temperature,
'topK' => 40,
'topP' => 0.95,
'maxOutputTokens' => intval($length 1.5),
'stopSequences' => array()
)
);
$response = wp_remote_post(
$api_endpoint . '?key=' . $api_key,
array(
'headers' => array('Content-Type' => 'application/json'),
'body' => json_encode($request_body),
'timeout' => 60
)
);
if (is_wp_error($response)) {
$error_message = $response->get_error_message();
// 记录错误
error_log('Gemini API Error: ' . $error_message);
return array('success' => false, 'message' => 'API请求失败: ' . $error_message);
}
$body = wp_remote_retrieve_body($response);
$data = json_decode($body, true);
// 检查API错误
if (isset($data['error'])) {
$error_message = $data['error']['message'];
error_log('Gemini API Error: ' . $error_message);
// 处理特定错误
if (strpos($error_message, 'quota') !== false) {
return array('success' => false, 'message' => 'API配额已用完,请明天再试或升级配额');
} elseif (strpos($error_message, 'invalid API key') !== false) {
return array('success' => false, 'message' => 'API密钥无效,请检查设置');
} else {
return array('success' => false, 'message' => 'API错误: ' . $error_message);
}
}
if (isset($data['candidates'][0]['content']['parts'][0]['text'])) {
$content = $data['candidates'][0]['content']['parts'][0]['text'];
// 检查内容是否被截断
if (isset($data['candidates'][0]['finishReason']) && $data['candidates'][0]['finishReason'] === 'MAX_TOKENS') {
return array('success' => true, 'content' => $content, 'warning' => '内容可能因长度限制被截断');
}
return array('success' => true, 'content' => $content);
} else {
return array('success' => false, 'message' => '无法解析API响应');
}
}
这个增强版的内容生成函数包含了全面的错误处理机制。它会检查API调用频率限制,记录API调用次数用于配额管理,并处理各种可能的API错误情况,包括配额用完、无效API密钥等。函数返回一个包含成功状态、内容或错误消息的数组,便于调用方处理不同情况。所有错误都会记录到WordPress错误日志中,方便排查问题。
集成到WordPress编辑器
为了提供更好的用户体验,我们可以将Gemini AI集成到WordPress编辑器中,让用户在编辑文章时直接使用AI功能:
// 添加编辑器按钮
function add_gemini_button_to_editor() {
if (!current_user_can('edit_posts')) {
return;
}
wp_enqueue_script('gemini-editor-integration', plugin_dir_url(__FILE__) . 'js/gemini-editor.js', array('jquery', 'wp-editor'), '1.0', true);
wp_localize_script('gemini-editor-integration', 'geminiEditor', array(
'ajaxUrl' => admin_url('admin-ajax.php'),
'nonce' => wp_create_nonce('gemini_editor_nonce'),
'loadingText' => '正在生成内容...'
));
}
add_action('enqueue_block_editor_assets', 'add_gemini_button_to_editor');
// 处理AJAX请求
function handle_gemini_editor_request() {
check_ajax_referer('gemini_editor_nonce', 'nonce');
if (!current_user_can('edit_posts')) {
wp_send_json_error('权限不足');
}
$prompt = sanitize_text_field($_POST['prompt']);
$length = intval($_POST['length']);
$result = generate_content_with_gemini_enhanced($prompt, $length);
if ($result['success']) {
wp_send_json_success(array(
'content' => $result['content'],
'warning' => isset($result['warning']) ? $result['warning'] : ''
));
} else {
wp_send_json_error($result['message']);
}
}
add_action('wp_ajax_gemini_generate_content', 'handle_gemini_editor_request');
这段PHP代码添加了必要的脚本和AJAX处理函数。接下来,我们需要创建JavaScript文件(gemini-editor.js)来处理编辑器集成:
// gemini-editor.js
(function($) {
'use strict';
$(document).ready(function() {
// 添加工具栏按钮
if (wp && wp.editor && wp.editor.addButton) {
// 适用于经典编辑器
wp.editor.addButton('gemini_ai_button', {
text: 'AI生成内容',
icon: 'dashicons-edit-page',
onclick: function() {
showGeminiDialog();
}
});
}
// 适用于块编辑器(Gutenberg)
if (wp && wp.data && wp.plugins) {
const { registerPlugin } = wp.plugins;
const { PluginSidebar, PluginSidebarMoreMenuItem } = wp.editPost;
const { Button, TextareaControl, TextControl, Spinner } = wp.components;
const { useDispatch, useSelect } = wp.data;
const { useState } = wp.element;
const GeminiAISidebar = () => {
const [prompt, setPrompt] = useState('');
const [length, setLength] = useState(500);
const [isLoading, setIsLoading] = useState(false);
const [result, setResult] = useState('');
const [error, setError] = useState('');
const { insertBlock } = useDispatch('core/block-editor');
const generateContent = () => {
if (!prompt.trim()) {
setError('请输入提示词');
return;
}
setIsLoading(true);
setError('');
$.ajax({
url: geminiEditor.ajaxUrl,
type: 'POST',
data: {
action: 'gemini_generate_content',
nonce: geminiEditor.nonce,
prompt: prompt,
length: length
},
success: function(response) {
if (response.success) {
setResult(response.data.content);
if (response.data.warning) {
setError(response.data.warning);
}
} else {
setError(response.data);
}
},
error: function() {
setError('请求失败,请重试');
},
complete: function() {
setIsLoading(false);
}
});
};
const insertContent = () => {
if (result) {
// 创建段落块
const block = wp.blocks.createBlock('core/paragraph', {
content: result
});
// 插入到编辑器
insertBlock(block);
}
};
return (
setPrompt(value)}
help="描述您想要生成的内容"
/>
setLength(parseInt(value) || 500)}
min="100"
max="2000"
/>
{error && (
{error}
)}
{result && (
setResult(value)}
/>
)}
);
};
registerPlugin('gemini-ai-plugin', {
render: () => (
Gemini AI
>
)
});
}
});
})(jQuery);
</code>
这段JavaScript代码实现了与WordPress编辑器的集成。对于经典编辑器,它添加了一个工具栏按钮;对于块编辑器(Gutenberg),它创建了一个侧边栏插件。用户可以在侧边栏中输入提示词和期望的内容长度,点击生成按钮后,系统会通过AJAX调用Gemini API生成内容,并将结果显示在编辑器中。用户还可以一键将生成的内容插入到文章中。这种集成方式大大提升了用户体验,让AI内容生成成为文章创作流程的自然部分。
性能优化和缓存策略
为了提高系统性能并减少API调用次数,我们可以实现缓存策略:
// 增强版内容生成函数,添加缓存支持
function generate_content_with_gemini_cached($prompt, $length = 500, $use_cache = true) {
// 生成缓存键
$cache_key = 'gemini_' . md5($prompt . $length);
// 尝试从缓存获取
if ($use_cache) {
$cached_content = get_transient($cache_key);
if ($cached_content !== false) {
return array(
'success' => true,
'content' => $cached_content,
'from_cache' => true
);
}
}
// 调用API生成内容
$result = generate_content_with_gemini_enhanced($prompt, $length);
// 如果成功,缓存结果
if ($result['success']) {
// 缓存7天
set_transient($cache_key, $result['content'], WEEK_IN_SECONDS);
// 添加缓存标记
$result['from_cache'] = false;
}
return $result;
}
// 添加缓存管理功能
function gemini_cache_management() {
add_submenu_page(
'gemini-ai',
'Gemini缓存管理',
'缓存管理',
'manage_options',
'gemini-cache-management',
'gemini_cache_management_page'
);
}
add_action('admin_menu', 'gemini_cache_management', 30);
function gemini_cache_management_page() {
if (!current_user_can('manage_options')) {
return;
}
// 处理清除缓存操作
if (isset($_POST['clear_cache']) && check_admin_referer('gemini_clear_cache')) {
global $wpdb;
// 删除所有Gemini相关的缓存
$wpdb->query(
$wpdb->prepare(
"DELETE FROM $wpdb->options WHERE option_name LIKE %s",
$wpdb->esc_like('_transient_gemini_') . '%'
)
);
$wpdb->query(
$wpdb->prepare(
"DELETE FROM $wpdb->options WHERE option_name LIKE %s",
$wpdb->esc_like('_transient_timeout_gemini_') . '%'
)
);
echo '缓存已清除
';
}
// 获取缓存统计信息
global $wpdb;
$cache_count = $wpdb->get_var(
$wpdb->prepare(
"SELECT COUNT() FROM $wpdb->options WHERE option_name LIKE %s",
$wpdb->esc_like('_transient_gemini_') . '%'
)
);
// 获取缓存大小估算
$cache_size = 0;
$caches = $wpdb->get_results(
$wpdb->prepare(
"SELECT option_value FROM $wpdb->options WHERE option_name LIKE %s",
$wpdb->esc_like('_transient_gemini_') . '%'
)
);
foreach ($caches as $cache) {
$cache_size += strlen($cache->option_value);
}
// 转换为易读格式
$cache_size_readable = size_format($cache_size, 2);
?>
Gemini缓存管理
缓存统计
缓存条目数
缓存大小
缓存有效期
7天
缓存操作
清除缓存将删除所有Gemini生成的内容缓存,下次请求时将重新调用API生成内容。
最近的缓存
get_results(
$wpdb->prepare(
"SELECT option_name, option_value FROM $wpdb->options
WHERE option_name LIKE %s
ORDER BY option_id DESC
LIMIT 10",
$wpdb->esc_like('_transient_gemini_') . '%'
)
);
if ($recent_caches) {
echo '';
echo '提示词 内容预览 ';
foreach ($recent_caches as $cache) {
// 提取提示词(从缓存键中)
$prompt = substr($cache->option_name, strlen('_transient_gemini_'));
$prompt = substr($prompt, 0, 32); // 显示前32个字符
// 内容预览
$content_preview = substr($cache->option_value, 0, 100) . '...';
echo '';
echo '' . esc_html($prompt) . ' ';
echo '' . esc_html($content_preview) . ' ';
echo ' ';
}
echo '
';
} else {
echo '没有缓存项
';
}
?>
<?php
}
这段代码实现了缓存功能,可以显著提高系统性能并减少API调用成本。主要功能包括:
- 缓存生成的内容,避免重复调用API
- 缓存管理界面,显示缓存统计信息
- 清除缓存功能,方便管理
- 查看最近缓存的内容
缓存使用WordPress的transient API实现,默认有效期为7天。缓存键基于提示词和内容长度生成,确保相同的请求会返回缓存的内容。在缓存管理界面,管理员可以查看缓存统计信息,包括缓存条目数和大小,以及清除所有缓存。这种缓存策略可以大幅减少API调用次数,提高响应速度,降低使用成本。
安全性考虑
在集成Gemini AI模型API时,安全性是不可忽视的重要因素。以下是一些关键的安全措施:
// 添加安全验证
function gemini_api_security_check() {
// 检查用户权限
if (!current_user_can('edit_posts')) {
wp_die('您没有足够的权限执行此操作');
}
// 验证nonce
$nonce = isset($_REQUEST['_wpnonce']) ? $_REQUEST['_wpnonce'] : '';
if (!wp_verify_nonce($nonce, 'gemini_nonce')) {
wp_die('安全验证失败,请重试');
}
// 检查API密钥是否设置
$api_key = get_option('gemini_api_key');
if (empty($api_key)) {
wp_die('API密钥未配置');
}
// 限制API调用频率
$user_id = get_current_user_id();
$rate_limit_key = 'gemini_rate_limit_' . $user_id;
$last_call = get_transient($rate_limit_key);
if ($last_call !== false) {
wp_die('请求过于频繁,请稍后再试');
}
// 设置调用频率限制(每分钟最多10次)
set_transient($rate_limit_key, time(), MINUTE_IN_SECONDS / 10);
}
add_action('before_gemini_api_call', 'gemini_api_security_check');
// 内容安全过滤
function gemini_content_security_filter($content) {
// 检查敏感词
$sensitive_words = array(
'暴力', '色情', '赌博', '毒品', '违法', '诈骗'
);
foreach ($sensitive_words as $word) {
if (strpos($content, $word) !== false) {
return false; // 发现敏感词,标记为不安全
}
}
// 检查外部链接
$link_count = substr_count($content, 'http');
if ($link_count > 5) {
return false; // 外部链接过多,可能不安全
}
// 检查JavaScript代码
if (strpos($content, ' false,
'message' => '生成的内容未通过安全检查,请修改提示词后重试'
);
}
// 更新结果为过滤后的内容
$result['content'] = $filtered_content;
}
return $result;
}
// 添加IP白名单功能
function gemini_ip_whitelist_check() {
$whitelist = get_option('gemini_ip_whitelist', array());
if (!empty($whitelist)) {
$user_ip = $_SERVER['REMOTE_ADDR'];
if (!in_array($user_ip, $whitelist)) {
wp_die('您的IP地址未被授权访问此功能');
}
}
}
add_action('before_gemini_api_call', 'gemini_ip_whitelist_check', 20);
// 添加IP白名单设置
function gemini_ip_whitelist_settings() {
add_settings_field(
'gemini_ip_whitelist',
'IP白名单',
'gemini_ip_whitelist_callback',
'gemini_api_settings',
'gemini_api_settings_section'
);
register_setting('gemini_api_settings', 'gemini_ip_whitelist');
}
add_action('admin_init', 'gemini_ip_whitelist_settings');
function gemini_ip_whitelist_callback() {
$whitelist = get_option('gemini_ip_whitelist', array());
?>
每行输入一个IP地址,留空则允许所有IP访问
<?php
}
这段代码实现了多层次的安全措施,保护WordPress网站和Gemini API集成免受潜在威胁:
- 权限验证:确保只有具有编辑文章权限的用户才能使用AI功能
- Nonce验证:防止CSRF攻击,确保请求来源合法
- API密钥保护:检查API密钥是否已正确配置
- 频率限制:防止API滥用,限制每个用户的调用频率
- 内容过滤:检查生成的内容是否包含敏感词、过多外部链接或潜在危险的JavaScript代码
- IP白名单:限制只有特定IP地址的用户才能使用AI功能,提供额外的安全层
这些安全措施共同构成了一个全面的安全框架,保护网站免受各种潜在威胁。在实际部署时,建议根据网站的具体需求和安全要求调整这些措施。例如,对于内部使用的网站,可以启用IP白名单;对于公共网站,可以加强内容过滤和频率限制。