每天都是自己更新文章,感觉有点累,也不能很好的和关注的朋友做到很好的互动,给自己的博客添加了一个投稿功能,这样关注的朋友也可以给自己的博客写文章,何乐而不为呢?
这里就提供两种方法实现:
1 、插件实现
WordPress 之所以强大就是因为有无数个插件,可以实现很多功能,所以投稿也是可以用插件实现的;
推荐插件:submit post 或 ucan post;
然而大家都明白,无论多么简单的插件,里面都会有很多没用的东西,这些会拖慢我们网站的运行速度,所以不得已,应尽量少使用插件,本文对插件的实现就不再累述,非插件实现才是本文的重点。
2 、代码实现 (推荐)
步骤如下:
a 、在主题文件夹下面新建一个 【tougao.php 】文件,把主题文件 page.php 里面的代码全选复制到文件中;
b 、打开新建文件,在第一个 【< ?php 】代码 (一般是  ) 后面敲几个回车,然后把以下代码粘贴进来:

/*
Template Name: 投稿模板
*/
if( isset($_POST['tougao_form']) && $_POST['tougao_form'] == 『send』)
{
global $wpdb;
$last_post = $wpdb->get_var(「SELECT post_date FROM $wpdb->posts WHERE post_type = 『post』 ORDER BY post_date DESC LIMIT 1″);
// 博客当前最新文章发布时间与要投稿的文章至少间隔 120 秒。
// 可自行修改时间间隔,修改下面代码中的 120 即可
// 相比 Cookie 来验证两次投稿的时间差,读数据库的方式更加安全
if ( current_time(『timestamp』) – strtotime($last_post) < 120 )
{
wp_die(『您投稿也太勤快了吧,先歇会儿!』);
}

// 表单变量初始化
$name = isset( $_POST['tougao_authorname'] ) ? trim(htmlspecialchars($_POST['tougao_authorname'], ENT_QUOTES)) : 」;
$email =  isset( $_POST['tougao_authoremail'] ) ? trim(htmlspecialchars($_POST['tougao_authoremail'], ENT_QUOTES)) : 」;
$blog =  isset( $_POST['tougao_authorblog'] ) ? trim(htmlspecialchars($_POST['tougao_authorblog'], ENT_QUOTES)) : 」;
$title =  isset( $_POST['tougao_title'] ) ? trim(htmlspecialchars($_POST['tougao_title'], ENT_QUOTES)) : 」;
$category =  isset( $_POST['cat'] ) ? (int)$_POST['cat'] : 0;
$content =  isset( $_POST['tougao_content'] ) ? trim(htmlspecialchars($_POST['tougao_content'], ENT_QUOTES)) : 」;

// 表单项数据验证
if ( empty($name) || mb_strlen($name) > 20 )
{
wp_die(『昵称必须填写,且长度不得超过 20 字』);
}

if ( empty($email) || strlen($email) > 60 || !preg_match(「/^([a-z0-9+_-]+)(.[a-z0-9+_-]+)*@([a-z0-9-]+.)+[a-z]{2,6}$/ix」, $email))
{
wp_die(『Email 必须填写,且长度不得超过 60 字,必须符合 Email 格式』);
}

if ( empty($title) || mb_strlen($title) > 100 )
{
wp_die(『标题必须填写,且长度不得超过 100 字』);
}

if ( empty($content) || mb_strlen($content) > 3000 || mb_strlen($content) < 100)
{
wp_die(『内容必须填写,且长度不得超过 3000 字,不得少于 100 字』);
}

$post_content = 『昵称: 『.$name.』<br />Email: 『.$email.』<br />blog: 『.$blog.』<br /> 内容:<br />』.$content;

$tougao = array(
『post_title』 => $title,
『post_content』 => $post_content,
『post_category』 => array($category)
);
// 将文章插入数据库
$status = wp_insert_post( $tougao );

if ($status != 0)
{
// 投稿成功给博主发送邮件
// somebody#example.com 替换博主邮箱
// My subject 替换为邮件标题,content 替换为邮件内容
wp_mail(「somebody#example.com」,」My subject」,」content」);
wp_die(『投稿成功!感谢投稿!』, 『投稿成功』);
}
else
{
wp_die(『投稿失败!』);
}
}

c 、找到 page.php 里面的文章内容调用代码,一般是 【< ?php the_content(); ?> 】,在后面粘贴以下表单代码:

<form id=」tougaoform」 method=」post」 action=」<?php echo $_SERVER["REQUEST_URI"]; ?>」>
<p><input id=」author」 type=」text」 size=」40″ value=」" name=」tougao_authorname」 /><label> 昵称 (*必填)</label></p>
<p><input id=」email」 type=」text」 size=」40″ value=」" name=」tougao_authoremail」 /><label> 邮箱 (*必填)</label></p>
<p><input id=」url」 type=」text」 size=」40″ value=」" name=」tougao_authorblog」 /><label> 您的博客/文章来源</label></p>
<p><input id=」tougao_title」 type=」text」 size=」40″ value=」" name=」tougao_title」 /><label> 文章标题 (*必填)</label></p>
<p><input id=」tags」 type=」text」 size=」40″ value=」" name=」tougao_tags」 /><label> 文章标签 (多个标签请用英文逗号 , 分开)</label></p>
<p><?php wp_dropdown_categories(『show_option_none=请选择文章分类&show_count=1& hierarchical=1&hide_empty=0′); ?><label> 文章分类 (*必填)</label></p>
<textarea rows=」15″ cols=」55″ id=」tougao」 name=」tougao_content」></textarea>
<p>
<input type=」hidden」 value=」send」 name=」tougao_form」 />
<input id=」submit」 type=」submit」 value=」 提交」 />
<input id=」reset」 type=」reset」 value=」 重填」 />
</p>
</form>

OK!投稿页面已经完工,下面看怎么用?
现在去 WordPress 后台新建一个 page 页面吧 (需注意:主题必须支持 page 页面),可以随便写一个标题,比如 「欢迎投稿」,然后在内容里面写上你的投稿要求,下面这步操作最重要:
在页面发布下面有一个页面属性,这个就是你刚才加那个文件的作用,然后在 【模板】 里面选择 【投稿模板】;
大功告成,去网站看一下效果吧!
好了,去发布一篇试试吧,发布后会自动存储为网站 【草稿】,可以编辑发布,当然你如果想直接发布,就把 「b」 步骤下面的代码:

『post_content』 => $post_content,

替换为:

『post_content』 => $post_content,
『post_status』 => 『publish』,

不过不太推荐,毕竟投放的文章良莠不齐,还是审核一下比较好。