Markdown转换与优化整合方案
服务器繁忙,请稍后再试。
时间: 2025-02-26T22:47:16
👤 用户
你好,帮我分析下下面两段程序的问题,并做一些优化。第一段程序主要功能就是所见即所得,markdown转换为html,markdown原文发布到blog中,而且似乎里面的重置按钮不起作用。第二段代码我想实现的功能是markdown文章转换为文本,并且可以复制转换后的文本内容。能不能把这两段程序整合一起,在第一段程序的上方的选择按钮添加一个Markdown2txt选择按钮。
第一段:
<?php
// 加载 WordPress 环境
require_once(‘../wp-load.php’);
// 引入 Parsedown 库(用于解析 Markdown)
require_once ‘Parsedown.php’;
// 检查是否提交了表单
if ($_SERVER[‘REQUEST_METHOD’] === ‘POST’ && isset($_POST[‘title’])) {
// 检查 nonce 和用户权限
if (!isset($_POST[‘markdown_publish_nonce’]) || !wp_verify_nonce($_POST[‘markdown_publish_nonce’], ‘markdown_publish_action’)) {
echo ‘
安全验证失败,请重试。
‘;} elseif (!current_user_can(‘publish_posts’)) {
echo ‘
你没有权限发布文章。
‘;} else {
// 获取表单数据
$title = sanitize_text_field($_POST[‘title’]);
$category = isset($_POST[‘category’]) ? intval($_POST[‘category’]) : 0; // 分类 ID
$tags = isset($_POST[‘tags’]) ? sanitize_text_field($_POST[‘tags’]) : ‘’; // 标签
// 判断发布方式
$publish_mode = isset($_POST['publish_mode']) ? sanitize_text_field($_POST['publish_mode']) : 'wysiwyg';
// 处理内容
if ($publish_mode === 'markdown2html') {
// Markdown 转换为 HTML 发布模式
$markdown = $_POST['markdown'];
$parsedown = new Parsedown();
$content = $parsedown->text($markdown); // 将 Markdown 转换为 HTML
} elseif ($publish_mode === 'markdown') {
// 直接发布 Markdown 原文
$content = sanitize_textarea_field($_POST['markdown']); // 直接保存 Markdown 原文
} else {
// 所见即所得发布模式
$content = wp_kses_post($_POST['content']); // 清理 HTML 内容
}
// 发布文章
$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 '<div class="success">文章发布成功!<a href="' . get_permalink($post_id) . '">查看文章</a></div>';
} else {
echo '<div class="error">文章发布失败,请重试。</div>';
}
}
}
// 获取所有分类
$categories = get_categories([‘hide_empty’ => false]);
?>