• wordpress CMS主题:ssmay主题wordpress CMS主题:ssmay主题
  • 首页 > wordpress CMS主题制作 > wordpress CMS主题用户中心开发 7:author_write.php添加php处理代码

    wordpress CMS主题用户中心开发 7:author_write.php添加php处理代码

    作者: 分类:wordpress CMS主题制作 点击: 59 次
    wordpress CMS主题:ssmay主题

      我们接着来对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 ('<script>alert("您写博客也太勤快了吧,先歇会儿!"); history.back(); </script>');
      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 ('<script>alert("标题必须填写,且长度不得超过100字"); history.back(); </script>');
      return;
      }

      //判断标题是否存在
      $rel = $wpdb->get_row('select * from wp_posts where post_title="'.$title.'"');
      if($rel){
      echo ('<script>alert("内容重复,请重新填写。"); history.back(); </script>');
      return;
      }

      //分类有没有选择
      if($category<=0){ //选择分类
      echo ('<script>alert("你没有选择分类"); history.back(); </script>');
      return;
      }
      //文章内容长度判断
      if ( empty($content) || mb_strlen($content) > 10000 || mb_strlen($content) < 100){
      echo ('<script>alert("内容必须填写,且长度不得超过10000字,不得少于100字"); history.back(); </script>');
      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主题的用户中心,不仅是为了发表文章,我们还要在发表文章时实现积分的累加。这个在下一章中,我们再接着往下讲。嗯,本章就介绍到这里。谢谢大家参阅哦。

       

    文章作者:高时银博客
    本文地址:http://wanlimm.com/77201808106524.html
    本文时间:2018-08-10 09:18:04
    版权所有 © 转载时必须以链接形式注明作者和原始出处!

    上一篇:
    下一篇:
    wordpress CMS主题:ssmay主题

    或许你会感兴趣的文章:

    发表评论

    电子邮件地址不会被公开。 必填项已用*标注

    This site uses Akismet to reduce spam. Learn how your comment data is processed.