每天都是自己更新文章,感觉有点累,也不能很好的和关注的朋友做到很好的互动,小川就给自己的博客添加了一个投稿功能,这样关注的朋友也可以给自己的博客写文章,何乐而不为呢?
首先声明:这不是一个尝试哦!因为是小川实践成功的,可以称得上一个教程,按步骤来,是一定会成功的。
做到一件事,是有很多种方法的,这里小川就提供两种方法实现:
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’,
不过不太推荐,毕竟投放的文章良莠不齐,还是审核一下比较好。
评论(3)
有语法错误 $last_post = $wpdb->get_var(“SELECT post_date FROM $wpdb->posts WHERE post_type = ‘post’ ORDER BY post_date DESC LIMIT 1″);
分享了你的文章,谢谢老师!您辛苦了!
博主说的很有见解,顶一个。希望回访!