首页>技术知识>WordPress wordpress CMS主题用户中心开发 7:author_write.php添加php处理代码
WordPress教程学习网站
2022-06-22
WordPress教程学习网站丨模板定制、网站使用教程、插件推荐、代码优化、wp建站教程、数据文章采集、系统开发、系统优化,功能开发,仿站教程等各类WordPress技术知识,供网友学习了解。

我们接着来对WordPress主题的用户中心的author_write.php写博客文章页面进行完善。上一章中我们只是给它添加了前台静态代码,实现前台的展示效果。本章,我们将对author_write.php页面表单提交的数据进行处理,进而写入到wordpress数据库中。


第一步:判断页面是否提交了表单:

在这个页面的表单中我们添加了一个隐藏的表单元素tougao_form,我们只需判断这个表单元素在提交的数据中是否存在,如果存在,就表示正在提交表单数据,如下:

//发表文章
if( isset($_POST['tougao_form']) && $_POST['tougao_form'] == 'send'){

//在这里对表单提交的数据进行处理,下面的Php代码都写在这里

}


第二步:限制频繁发表文章

为了防止机器人乱发表文章,这里设置一个瓶颈,限制同一用户发表2篇文章之间的间隔是120秒。

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秒。
if ( current_time('timestamp') - strtotime($last_post) < 120 ){
echo ('

');
return;
}


第三步:获取表单数据。

这里获取表单提交上的数据,这些数据将会被写入到wordpress数据库中。代码如下:

// 表单变量初始化
$title = isset( $_POST['tougao_title'] ) ? trim(htmlspecialchars($_POST['tougao_title'], ENT_QUOTES)) : '';  //文章标题
$category = isset( $_POST['cat'] ) ? (int)$_POST['cat'] : 0; //文件分类
$content = isset( $_POST['myeditor'] ) ? $_POST['myeditor'] : ''; //文章内容
$user_id = isset( $_POST['user_id'] ) ? (int)$_POST['user_id'] : 0;//发表文章的用户ID

$post_tags = isset( $_POST['post_tags'] ) ? trim(htmlspecialchars($_POST['post_tags'], ENT_QUOTES)) : ''; //文章的tags标签


第四步:对数据进行必要的判断:

判断的目的,为了防止以下情况:空标题、标题在数据库是否已经存在、没有选择分类、文章内容过短或过长。代码如下:

// 标题是否为空
if ( empty($title) || mb_strlen($title) > 100 ){
echo ('

');
return;
}

//判断标题是否存在
$rel = $wpdb->get_row('select * from wp_posts where post_title="'.$title.'"');
if($rel){
echo ('

');
return;
}

//分类有没有选择
if($category<=0){ //选择分类
echo ('

');
return;
}
//文章内容长度判断
if ( empty($content) || mb_strlen($content) > 10000 || mb_strlen($content) < 100){
echo ('');
return;
}


第五步:将表单数据写入到数据库。

经过以上几步的过滤,我们可以把表单数据写入到wordpress的数据库中了。代码如下:

$tougao = array(     'post_status'   => 'publish', //publish表示正式发表。         'post_title' => $title,         'post_content' => $content,         'post_category' => array($category)     );     // 将文章插入数据库     $status = wp_insert_post( $tougao ); //返回文章ID

第六步:添加文章的tag标签。

因为wordpress的文章与文章标签在数据库中不是在同一张数据表中的,所以,wp_insert_post()函数在插入数据时,并没有把tags标签写入到数据库中,所以,我们要在此对tag进行插入操作,如下:

if ($status != 0){ //如果wp_insert_post()插入成功

wp_set_post_tags( $status, explode(",",$post_tags) );//插入tags标签

wp_die('文章发表成功!','文章发表成功!');

}else{
wp_die('文章发表失败!','文章发表失败!');
}

一般情况下,到这里,我们就可以结束了。但是,我们这里是在制作WordPress主题的用户中心,不仅是为了发表文章,我们还要在发表文章时实现积分的累加。这个在下一章中,我们再接着往下讲。嗯,本章就介绍到这里。谢谢大家参阅哦。

 

显示全部内容...