在WordPress中实现前台投稿功能需要一些自定义代码和插件的帮助,因为WordPress默认并没有提供前台投稿的内置功能。

wordpress添加前端投稿功能的方法-第0张图片下面是一个基本的实现方法,包括一些PHP代码和必要的插件设置。但请注意,这只是一个起点,具体实现可能需要根据你的需求进行调整和优化。

步骤 1:安装必要的插件

首先,你需要安装并激活以下插件:

1. User Registration或 WP User Manager:用于处理用户注册和登录。

2. Frontend Submit或 WPFrontend Post Submission:用于在前端添加投稿功能。

这些插件可以帮助你快速搭建起前台投稿的基础框架。

步骤 2:创建前端投稿表单

在你的主题中创建一个新的页面模板(例如 “frontend-post.php”),并添加以下代码来创建一个投稿表单:

php

<?php
/* Template Name: Frontend Post Submission */
get_header();
?>

<div id="primary" class="content-area">
<main id="main" class="site-main">
<section class="post-submission">
<h1>投稿表单</h1>
<?php if (is_user_logged_in()) { ?>
<form id="frontend-post-form" method="post" action="">
<label for="post-title">标题</label>
<input type="text" id="post-title" name="post_title" required>

<label for="post-content">内容</label>
<textarea id="post-content" name="post_content" required></textarea>

<!-- 可选:添加分类和标签选择 -->
<!-- <label for="post-category">分类</label>
<select id="post-category" name="post_category">
<?php // 填充分类选项 ?>
</select>

<label for="post-tags">标签</label>
<input type="text" id="post-tags" name="post_tags" data-role="tagsinput"> -->

<input type="hidden" name="action" value="frontend_post_submit">
<input type="hidden" name="user_id" value="<?php echo get_current_user_id(); ?>">
<input type="hidden" name="post_type" value="post"> <!-- 或其他自定义文章类型 -->
<button type="submit">提交</button>
</form>
<?php } else { ?>
<p>请登录后投稿。</p >
<?php } ?>
</section>
</main>
</div>

<?php
get_footer();
?>

步骤 3:处理投稿表单提交

在你的主题的 “functions.php`”文件中添加以下代码来处理投稿表单的提交:

php

function frontend_post_submit() {
if (!is_user_logged_in()) {
wp_redirect(wp_login_url($_SERVER['REQUEST_URI']));
exit;
}

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$user_id = get_current_user_id();
$title = sanitize_text_field($_POST['post_title']);
$content = wp_kses_post($_POST['post_content']);
$post_type = sanitize_text_field($_POST['post_type']);

// 可选:处理分类和标签
// $category_id = sanitize_text_field($_POST['post_category']);
// $tags = explode(',', sanitize_text_field($_POST['post_tags']));

$post_data = array(
'post_title' => $title,
'post_content' => $content,
'post_type' => $post_type,
'post_status' => 'pending', // 或 'publish',根据你的需求
'post_author' => $user_id,
);

$post_id = wp_insert_post($post_data);

if ($post_id) {
// 可选:设置分类和标签
// wp_set_post_categories($post_id, array($category_id));
// wp_set_post_tags($post_id, $tags);

wp_redirect(home_url('/'));
exit;
} else {
wp_die('投稿失败,请重试。');
}
}
}
add_action('admin_post_nopriv_frontend_post_submit', 'frontend_post_submit');
add_action('admin_post_frontend_post_submit', 'frontend_post_submit');

步骤 4:自定义和测试

1. 自定义表单:根据需要自定义投稿表单的样式和功能。

2. 测试:创建一个测试账户,登录后尝试提交文章,确保一切正常工作。

3. 调整权限:根据你的需求调整用户权限,例如是否允许用户直接发布文章,还是需要将文章提交给管理员审核。

注意事项

安全性:确保对用户输入进行适当的清理和验证,以防止安全漏洞。

用户体验:提供清晰的反馈和错误消息,以改善用户体验。

扩展性:考虑未来可能需要添加的功能,如文件上传、自定义字段等。

以上代码提供了一个基本的前台投稿功能实现框架,但具体实现可能需要根据你的需求进行调整和优化。