本文探讨在 wordpress 前端集成古腾堡块编辑器的挑战,并提供一种实用的替代方案:通过自定义表单实现前端内容提交。我们将详细介绍如何构建一个功能完善的表单,包括用户输入、分类选择和图片上传,并演示后端数据验证与保存逻辑。尽管直接嵌入完整古腾堡编辑器复杂,但此方法为用户在网站前端发布内容提供了有效的途径。
许多 WordPress 开发者希望能在网站前端直接提供古腾堡(Gutenberg)块编辑器的完整功能,以便用户无需进入后台即可编辑内容。然而,直接将管理后台的古腾堡编辑器实例完整地嵌入到任意前端页面,并非 WordPress 官方提供的一种简单或推荐的途径。
鉴于直接集成完整古腾堡编辑器的复杂性,一种更实际且可控的替代方案是构建自定义前端表单,允许用户在前端提交文章或页面内容。
此方法通过创建自定义 HTML 表单,并结合 WordPress 的后端 API 来处理数据的提交和保存,从而实现在不使用完整古腾堡编辑器的情况下,允许用户在前端发布内容。
首先,我们需要在前端页面上创建一个表单,用于收集用户输入的文章标题、内容、分类和特色图片等信息。通常,这会通过一个自定义页面模板来实现。
发布新文章
说明:
在表单提交到服务器之前,进行客户端验证可以提供即时反馈,改善用户体验,并减轻服务器负担。
说明:
当表单提交后,我们需要在服务器端处理数据,包括验证、创建文章和上传图片。此逻辑通常放置在同一个页面模板的顶部,或者通过 WordPress 的 admin_post 或 admin_post_nopriv 钩子处理。为了简化示例,我们将其放在模板顶部。
ID; // 当前用户ID
// 获取表单数据,并进行基本清理
$post_title = sanitize_text_field($_POST['title']);
$post_content = wp_kses_post($_POST['sample_content']); // 允许HTML内容
$category = (int)$_POST['category']; // 确保分类ID是整数
// 准备文章数据
$new_post = array(
'post_title' => $post_title,
'post_content' => $post_content,
'post_status' => 'pending', // 默认设置为待审核
'post_author' => $user_id,
'post_type' => 'post', // 或其他自定义文章类型
'post_category' => array($category) // 分类需要以数组形式传递
);
// 插入新文章
$pid = wp_insert_post($new_post);
if (is_wp_error($pid)) {
echo "文章发布失败:" . $pid->get_error_message() . "
";
} elseif ($pid > 0) {
// 处理特色图片上传
if (!function_exists('wp_generate_attachment_metadata'))
{
require_once(ABSPATH . "wp-admin" . '/includes/image.php');
require_once(ABSPATH . "wp-admin" . '/includes/file.php');
require_once(ABSPATH . "wp-admin" . '/includes/media.php');
}
if (!empty($_FILES['sample_image']['name']))
{
$file_id = media_handle_upload( 'sample_image', $pid ); // 'sample_image' 是表单中文件输入的 name
if (is_wp_error($file_id)) {
echo "图片上传失败:" . $file_id->get_error_message() . "
";
} el
seif ($file_id > 0)
{
// 设置上传的图片为文章的特色图片
update_post_meta($pid, '_thumbnail_id', $file_id);
echo "文章发布成功,并已设置特色图片!
";
}
} else {
echo "文章发布成功!
";
}
// 可选:重定向到新文章页面或成功提示页面
// wp_redirect(get_permalink($pid));
// exit;
}
}
}
else
{
echo "用户必须登录才能发布文章!
";
}
?>说明:
在实现前端内容提交功能时,除了上述代码,还需要考虑以下几点:
安全性考量:
用户体验:
功能扩展:
与古腾堡的差异:
在 WordPress 前端集成完整的古腾堡块编辑器是一项具有挑战性的任务,目前没有官方直接且简单的解决方案。然而,通过构建一个自定义的前端提交表单,开发者可以为用户提供一个有效且可控的途径,让他们在不进入 WordPress 后台的情况下发布文章或页面内容。
这种自定义表单方法适用于以下场景:
在实施过程中,务必重视安全性和用户体验,确保所有用户输入都经过严格的净化和验证,并向用户提供清晰的反馈。