WordPress WYSIWYG 文章发布工具解析
这段代码实现了一个基于 Markdown 的文章发布工具,用户可以通过输入 Markdown 格式的内容,将其解析为 HTML 并发布到 WordPress 中。以下是代码的主要功能和结构解析:
主要功能
加载 WordPress 环境:
- 通过
require_once('../wp-load.php')加载 WordPress 核心功能。
- 通过
引入 Parsedown 库:
- 使用
Parsedown库将 Markdown 内容解析为 HTML。
- 使用
表单提交处理:
- 检查表单是否通过 POST 方法提交。
- 验证 nonce(安全令牌)和用户权限(
publish_posts权限)。 - 获取并清理表单数据(标题、Markdown 内容、分类、标签)。
- 使用
Parsedown解析 Markdown 内容为 HTML。 - 使用
wp_insert_post发布文章,并分配分类和标签。 - 根据发布结果显示成功或错误消息。
分类和标签支持:
- 使用
get_categories获取所有分类,并在表单中显示。 - 允许用户输入标签(以逗号分隔),并通过
wp_set_post_tags分配标签。
- 使用
前端界面:
- 提供一个简单的表单界面,包括标题输入框、Markdown 内容输入框、分类选择框、标签输入框和操作按钮。
表单重置功能:
- 提供“重置”按钮,清空表单内容。
代码改进建议
界面优化:
- 调整标题输入框的长度,使其与内容框一致。
- 优化整体布局,使其更加现代和美观。
安全性增强:
- 对
$_POST['markdown']进行更严格的清理,例如使用wp_kses_post过滤解析后的 HTML 内容,防止 XSS 攻击。
- 对
用户体验优化:
- 在表单提交后,保留用户输入的内容(除了成功发布的情况),避免用户重新填写。
- 添加加载指示器,防止用户多次点击提交按钮。
Markdown 预览功能:
- 添加一个实时 Markdown 预览功能,方便用户查看解析后的效果。
修改后的代码
以下是改进后的代码,主要优化了界面和用户体验:
1 |
|
主要改动
界面优化:
- 调整了整体布局,增加了内边距和圆角,使界面更现代。
- 使用了柔和的背景色和阴影,提升视觉层次感。
- 改进了按钮样式,增加了悬停效果。
- 优化了成功和错误消息的样式,使其更醒目。
标题输入框加长:
- 将标题输入框的宽度设置为
100%,与内容框保持一致。
- 将标题输入框的宽度设置为
细节调整:
- 增加了输入框和选择框的聚焦效果。
- 调整了字体大小和颜色,使界面更易读。
效果预览
- 标题输入框和内容框宽度一致,整体布局更加协调。
- 界面风格简洁现代,按钮和输入框的交互效果更加友好。
- 成功和错误消息的样式更加突出,便于用户识别。
希望这个版本能满足你的需求!如果有其他调整需求,可以随时告诉我。
时间: 2025-02-26T20:45:03
👤 用户
安全验证失败,请重试。你没有权限发布文章。
';
} else {
// 获取表单数据
$title = sanitize_text_field($_POST['title']);
$content = $_POST['content']; // TinyMCE 输出的 HTML 内容
$category = isset($_POST['category']) ? intval($_POST['category']) : 0; // 分类 ID
$tags = isset($_POST['tags']) ? sanitize_text_field($_POST['tags']) : ''; // 标签
// 发布文章
$post_id = wp_insert_post([
'post_title' => $title,
'post_content' => $content,
'post_status' => 'publish', // 直接发布
'post_author' => get_current_user_id(), // 当前用户为作者
'post_category' => [$category], // 分配分类
]);
if ($post_id) {
// 分配标签
if (!empty($tags)) {
wp_set_post_tags($post_id, $tags);
}
echo '文章发布成功!查看文章
';
} else {
echo '文章发布失败,请重试。
';
}
}
}
// 获取所有分类
$categories = get_categories(['hide_empty' => false]);
?>
Markdown 发布工具
时间: 2025-02-26T20:45:03
🤖 DeepSeek (deepseek-chat)
这段代码实现了一个基于 Markdown 的文章发布工具,用户可以通过输入 Markdown 格式的内容,将其解析为 HTML 并发布到 WordPress 中。以下是代码的主要功能和结构解析:
主要功能
加载 WordPress 环境:
- 通过
require_once('../wp-load.php')加载 WordPress 核心功能。
- 通过
引入 Parsedown 库:
- 使用
Parsedown库将 Markdown 内容解析为 HTML。
- 使用
表单提交处理:
- 检查表单是否通过 POST 方法提交。
- 验证 nonce(安全令牌)和用户权限(
publish_posts权限)。 - 获取并清理表单数据(标题、Markdown 内容、分类、标签)。
- 使用
Parsedown解析 Markdown 内容为 HTML。 - 使用
wp_insert_post发布文章,并分配分类和标签。 - 根据发布结果显示成功或错误消息。
分类和标签支持:
- 使用
get_categories获取所有分类,并在表单中显示。 - 允许用户输入标签(以逗号分隔),并通过
wp_set_post_tags分配标签。
- 使用
前端界面:
- 提供一个简单的表单界面,包括标题输入框、Markdown 内容输入框、分类选择框、标签输入框和操作按钮。
表单重置功能:
- 提供“重置”按钮,清空表单内容。
代码改进建议
界面优化:
- 调整标题输入框的长度,使其与内容框一致。
- 优化整体布局,使其更加现代和美观。
安全性增强:
- 对
$_POST['markdown']进行更严格的清理,例如使用wp_kses_post过滤解析后的 HTML 内容,防止 XSS 攻击。
- 对
用户体验优化:
- 在表单提交后,保留用户输入的内容(除了成功发布的情况),避免用户重新填写。
- 添加加载指示器,防止用户多次点击提交按钮。
Markdown 预览功能:
- 添加一个实时 Markdown 预览功能,方便用户查看解析后的效果。
修改后的代码
以下是改进后的代码,主要优化了界面和用户体验:
1 |
|
主要改动
界面优化:
- 调整了整体布局,增加了内边距和圆角,使界面更现代。
- 使用了柔和的背景色和阴影,提升视觉层次感。
- 改进了按钮样式,增加了悬停效果。
- 优化了成功和错误消息的样式,使其更醒目。
标题输入框加长:
- 将标题输入框的宽度设置为
100%,与内容框保持一致。
- 将标题输入框的宽度设置为
细节调整:
- 增加了输入框和选择框的聚焦效果。
- 调整了字体大小和颜色,使界面更易读。
效果预览
- 标题输入框和内容框宽度一致,整体布局更加协调。
- 界面风格简洁现代,按钮和输入框的交互效果更加友好。
- 成功和错误消息的样式更加突出,便于用户识别。
希望这个版本能满足你的需求!如果有其他调整需求,可以随时告诉我。
时间: 2025-02-26T20:45:03
对话统计
- 消息总数: 6 条
- 处理状态: 成功转换