以下是在WordPress前端添加投稿功能(包括投稿成功和失败提示)的一种纯代码实现的方法。
在WordPress前端添加投稿功能纯代码示例:
1. 创建投稿表单的HTML和PHP文件:
首先,在你的WordPress主题目录下创建一个名为 “submit - post.php”(你可以根据需要自定义名称)的文件。
在这个文件中添加以下代码:
php
<?php
// 检查用户是否已经登录
if (! is_user_logged_in()) {
wp_redirect( wp_login_url( get_permalink() ) );
exit;
}
// 处理表单提交
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$post_title = sanitize_text_field($_POST['post_title']);
$post_content = wp_kses_post($_POST['post_content']);
$post_status = 'pending'; // 可以根据需要修改状态,这里设置为待审核
$new_post = array(
'post_title' => $post_title,
'post_content' => $post_content,
'post_status' => $post_status,
'post_author' => get_current_user_id()
);
$post_id = wp_insert_post($new_post);
if ($post_id) {
// 投稿成功提示
echo '<div class="success - message">您的投稿已成功提交,正在等待审核。</div>';
} else {
// 投稿失败提示
echo '<div class="failure - message">很抱歉,投稿失败,请检查您的内容后重试。</div>';
}
}
?>
<!DOCTYPE html>
<html>
<head>
<title>前端投稿</title>
</head>
<body>
<!-- 投稿表单 -->
<form method="post" action="<?php echo esc_url( get_permalink() );?>">
<label for="post_title">标题:</label>
<input type="text" id="post_title" name="post_title" required><br>
<label for="post_content">内容:</label>
<textarea id="post_content" name="post_content" required></textarea><br>
<input type="submit" value="投稿">
</form>
</body>
</html>
2. 将表单添加到前端页面:
你可以在主题的 “functions.php”文件中使用以下函数将这个表单添加到你想要的页面。例如,将其添加到一个名为 “front - submission - page.php”的自定义页面模板中:
php
function add_submit_post_page() {
$page = get_page_by_title('前端投稿页面');// 根据页面标题获取页面,如果页面不存在则创建
if (!$page) {
$page_id = wp_insert_post(array(
'post_title' => '前端投稿页面',
'post_type' => 'page',
'post_status' => 'publish'
));
} else {
$page_id = $page->ID;
}
add_shortcode('submit_post_form','submit_post_form_shortcode');
function submit_post_form_shortcode() {
ob_start();
include('submit - post.php');
return ob_get_clean();
}
update_post_meta($page_id,'_wp_page_template','front - submission - page.php');
}
add_action('init', 'add_submit_post_page');
请注意,这只是一个基本的示例,你可能需要根据你的具体需求,如添加更多的字段(例如分类、标签等)或者进行样式调整等。在实际应用中,还需要考虑安全性、数据验证等更多的因素。你可以提出更多具体的修改意见,例如表单的样式、需要添加的其他投稿信息等,以便进一步完善这个功能。