首页 > CMS > Wordpress > 正文

WordPress实现投稿与会员登录投稿功能

2024-09-07 00:50:22
字体:
来源:转载
供稿:网友

WordPress实现投稿功能

一、添加投稿表单

1、首先在当前主题的目录下新建一个php文件,命名为tougao-page.php,然后将page.php中的所有代码复制到tougao-page.php中;

2、删除tougao-page.php开头的所有注释,即 /* 与 */ ,以及它们之间的所有内容;

3、将 <?php the_content(); ?> 改成以下代码:

  1. <?php the_content(); ?> 
  2. <form method="post" action="<?php echo $_SERVER["REQUEST_URI"]; ?>"
  3. <div style="text-align: left; padding-top: 10px;"
  4. <label>昵称:*</label> 
  5. </div> 
  6. <div> 
  7. <input type="text" size="40" value="" name="tougao_authorname" /> 
  8. </div> 
  9. <div style="text-align: left; padding-top: 10px;"
  10. <label>E-Mail:*</label> 
  11. </div> 
  12. <div> 
  13. <input type="text" size="40" value="" name="tougao_authoremail" /> 
  14. </div> 
  15. <div style="text-align: left; padding-top: 10px;"
  16. <label>您的博客:</label> 
  17. </div> 
  18. <div> 
  19. <input type="text" size="40" value="" name="tougao_authorblog" /> 
  20. </div> 
  21. <div style="text-align: left; padding-top: 10px;"
  22. <label>文章标题:*</label> 
  23. </div> 
  24. <div> 
  25. <input type="text" size="40" value="" name="tougao_title" /> 
  26. </div> 
  27. <div style="text-align: left; padding-top: 10px;"
  28. <label>分类:*</label> 
  29. </div> 
  30. <div style="text-align: left;"
  31. <?php wp_dropdown_categories('show_count=1&hierarchical=1'); ?> 
  32. </div> 
  33. <div style="text-align: left; padding-top: 10px;"
  34. <label>文章内容:*</label> 
  35. </div> 
  36. <div> 
  37. <textarea rows="15" cols="55" name="tougao_content"></textarea> 
  38. </div> 
  39. <br clear="all"
  40. <div style="text-align: center; padding-top: 10px;"
  41. <input type="hidden" value="send" name="tougao_form" /> 
  42. <input type="submit" value="提交" /> 
  43. <input type="reset" value="重填" /> 
  44. </div> 
  45. </form> 

二、添加表单处理代码

在tougao-page.php中,将第一个<?php 改成如下代码:

  1. <?php /* * Template Name: tougao * @author: Ludou * @Email : zhouzb889@gmail.com * @Blog  : http://www.ludou.org/ */  
  2. if( isset($_POST['tougao_form']) && $_POST['tougao_form'] == 'send'
  3. if ( isset($_COOKIE["tougao"]) && ( time() - $_COOKIE["tougao"] ) < 120 ) 
  4. wp_die('您投稿也太勤快了吧,先歇会儿!'); 
  5. // 表单变量初始化     $name = isset( $_POST['tougao_authorname'] ) ? trim(htmlspecialchars($_POST['tougao_authorname'], ENT_QUOTES)) : ''; 
  6. $email =  isset( $_POST['tougao_authoremail'] ) ? trim(htmlspecialchars($_POST['tougao_authoremail'], ENT_QUOTES)) : ''
  7. $blog =  isset( $_POST['tougao_authorblog'] ) ? trim(htmlspecialchars($_POST['tougao_authorblog'], ENT_QUOTES)) : ''
  8. $title =  isset( $_POST['tougao_title'] ) ? trim(htmlspecialchars($_POST['tougao_title'], ENT_QUOTES)) : ''
  9. $category =  isset( $_POST['cat'] ) ? (int)$_POST['cat'] : 0; 
  10. $content =  isset( $_POST['tougao_content'] ) ? trim(htmlspecialchars($_POST['tougao_content'], ENT_QUOTES)) : ''
  11. // 表单项数据验证     if ( empty($name) || strlen($name) > 20 ) 
  12. wp_die('昵称必须填写,且长度不得超过20字'); 
  13. if ( emptyempty($email) || strlen($email) > 60 || !preg_match("/^([a-z0-9+_-]+)(.[a-z0-9+_-]+)*@([a-z0-9-]+.)+[a-z]{2,6}$/ix"$email)) 
  14. wp_die('Email必须填写,且长度不得超过60字,必须符合Email格式'); 
  15. if ( emptyempty($title) || strlen($title) > 100 ) 
  16. wp_die('标题必须填写,且长度不得超过100字'); 
  17. if ( emptyempty($content) || strlen($content) > 3000 || strlen($content) < 100) 
  18. wp_die('内容必须填写,且长度不得超过3000字,不得少于100字'); 
  19. $post_content = '昵称: '.$name.'<br />Email: '.$email.'<br />blog: '.$blog.'<br />内容:'.$content
  20. $tougao = array
  21. 'post_title' => $title
  22. 'post_content' => $post_content
  23. 'post_category' => array($category
  24. ); 
  25. // 将文章插入数据库     $status = wp_insert_post( $tougao ); 
  26. if ($status != 0) 
  27. setcookie("tougao", time(), time()+180); 
  28. wp_die('投稿成功!感谢投稿!'); 
  29. else     { 
  30. wp_die('投稿失败!'); 

代码补充说明,如果你想让让投稿的文章立即发布,而不需要审核再编辑,那么请将以上代码45行改成如下代码:

'post_content' => $post_content, 'post_status' => 'publish',

最后进入WordPress管理后台 – 页面 – 创建页面,标题为投稿(可以自己起名),内容填上投稿说明等,右侧可以选择模板,选择 tougao 即可好了,基本的投稿功能已经添加完毕,至于表单样式不好看,表单缺少你想要的项目等问题,你就自己添加css、表单项吧

如何实现会员登陆后投稿?请移步到:WordPress 实现会员登陆投稿

下是实现登陆后投稿的一部分代码,我相信看到这段代码,就能实现你想要的功能了代码如下:

  1. if(!is_user_logged_in()){ 
  2. ?> 
  3.  <h3 class="base-tit">您需要登陆才能投稿!</h3> 
  4.  <form method="post" action="<?php bloginfo('url'); ?>/wp-login.php" name="loginform" class="submit-signin"
  5.   <ul> 
  6.    <li><label><b>用户名:</b><input type="text" size="20" value="" name="log" class="ipt"></label></li> 
  7.    <li><label><b>密码:</b><input type="password" size="20" value="" name="pwd" class="ipt"></label></li> 
  8.    <li><input type="submit" value="立即登录" name="submit" class="btn btn-primary"></li> 
  9.    <li><a href="<?php bloginfo('url'); ?>/wp-login.php?action=register" class="btn btn-mini">注册</a><a href="<?php bloginfo('url'); ?>/wp-login.php?action=lostpassword" class="btn btn-mini">找回密码</a></li> 
  10.   </ul> 
  11.   <input type="hidden" value="<?php bloginfo('url'); ?>/submit" name="redirect_to"
  12.  </form> 
  13. <?php }else{?> 
  14.  <h3 class="base-tit">开始投稿!</h3> 
  15. 这里是投稿的表单,可自行设计........
  16. <?php }?>

如想要跟大前端效果一样,那表单处添加这样的HTML代码:

  1. <h3 class="base-tit">您需要登陆才能投稿!</h3> 
  2.     <form method="post" action="<?php bloginfo('url'); ?>/wp-login.php" name="loginform" class="submit-signin"> 
  3.         <ul> 
  4.             <li><label><b>用户名:</b><input type="text" size="20" value="" name="log" class="ipt"></label></li> 
  5.             <li><label><b>密码:</b><input type="password" size="20" value="" name="pwd" class="ipt"></label></li> 
  6.             <li><input type="submit" value="立即登录" name="submit" class="btn btn-primary"></li> 
  7.             <li><a href="<?php bloginfo('url'); ?>/wp-login.php?action=register" class="btn btn-mini">注册</a><a href="<?php bloginfo('url'); ?>/wp-login.php?action=lostpassword" class="btn btn-mini">找回密码</a></li> 
  8.         </ul> 
  9.         <input type="hidden" value="<?php bloginfo('url'); ?>/submit" name="redirect_to"> 
  10.     </form> 
  11.     <?php }else{?> 
  12.     <h3 class="base-tit">开始投稿!</h3> 
  13.     <ul class="submit-form"> 
  14.         <li> 
  15.             <label> 
  16.                 <span class="submit-tit"><em>*</em>文章标题</span> 
  17.                 <input type="text" class="ipt ipt-submit-title u_ipt_error" placeholder="写点什么..." size="40"> 
  18.                 <span class="u_tip" style="display: inline-block;">标题不能为空!</span> 
  19.             </label> 
  20.         </li> 
  21.         <li> 
  22.             <label> 
  23.                 <span class="submit-tit"><em>*</em>所属分类</span> 
  24.                 <?php wp_dropdown_categories('show_count=1&hierarchical=1&exclude=1,97,149,461&class=ipt-submit-cat'); ?> 
  25.             </label> 
  26.         </li> 
  27.         <li> 
  28.             <label> 
  29.                 <span class="submit-tit"><em>*</em>文章网址</span> 
  30.                 <input type="url" class="ipt ipt-submit-url" size="40" value="http://"> 
  31.                 <span class="u_tip"></span> 
  32.             </label> 
  33.         </li> 
  34.         <li> 
  35.             <label> 
  36.                 <span class="submit-tit"><em>*</em>作者</span> 
  37.                 <input type="url" class="ipt ipt-submit-author" size="40" value="<?php echo $u_name;?>"> 
  38.                 <span class="u_tip"></span> 
  39.             </label> 
  40.         </li> 
  41.         <li> 
  42.             <label> 
  43.                 <span class="submit-tit"><em>*</em>E-mail</span> 
  44.                 <input type="url" class="ipt ipt-submit-email" size="40" value="<?php echo $u_mail;?>"> 
  45.                 <span class="u_tip"></span> 
  46.             </label> 
  47.         </li> 
  48.         <li> 
  49.             <label> 
  50.                 <span class="submit-tit"><em>*</em>文章内容</span> 
  51.                 <textarea placeholder="写点什么..." class="submit-content u_ipt_error"></textarea> 
  52.                 <span class="u_tip u_tip_content" style="display: inline-block;">内容不能为空!</span> 
  53.             </label> 
  54.         </li> 
  55.         <li> 
  56.             <input type="button" value="立即提交" class="btn btn-primary dosubmit"> 
  57.             <input class="btn"  type="reset" value=" 重 填 " /> 
  58.         </li> 
  59.         <li style="padding-top:10px;"><span class="tip"></span></li> 
  60.     </ul> 

接着就是CSS样式了,代码如下:

  1. <style> 
  2. .submit-form li{margin-bottom: 12px;padding-left: 100px;clear: both;position: relative;} 
  3. .submit-tit{width: 94px;float: left;margin-left: -100px;text-align: right;font-size: 14px;line-height: 26px;} 
  4. .submit-form label em{color: #f00;font-style: normal;font-family: fantasy;margin-right: 2px;} 
  5. .submit-form .ipt{width: 300px;} 
  6. .submit-form select{border: 1px solid #D2D2D2;width: 314px;padding: 2px;border-radius: 2px;height: 30px;} 
  7. .submit-form textarea{border: 1px solid #D2D2D2;width: 98%;padding: 5px;border-radius: 2px;height: 250px;} 
  8. .submit-form .btn-primary{width: 90px;margin-right: 10px;} 
  9. .u_tip{position: absolute;margin-left: 10px;background-color: #F2DEDE;border: 1px solid #EED3D7;border-radius: 2px;height: 29px;line-height: 29px;padding: 0 10px;color: #B94A48;display: none;} 
  10. .u_ipt_error,.submit-form textarea.u_ipt_error{border: 1px solid #E0BAD2;box-shadow: 0 0 4px #E0BAD2;} 
  11. .u_tip_content{bottom: -42px;left: 47%} 
  12. .tip{background-color: #D9EDF7;border: 1px solid #BCE8F1;border-radius: 2px;padding: 6px 10px;color: #3A87AD;font-weight: bold;display: none;} 
  13. .article-entry ul{margin-left: 36px;} 
  14. .submit-signin ul{padding:10px 0 0 200px;} 
  15. .submit-signin li{clear:both;margin-bottom: 15px;} 
  16. .submit-signin b{float: left; width: 195px;text-align: right; margin-left: -200px;line-height: 29px;font-size: 14px;} 
  17. .submit-signin .ipt{width: 220px;font-weight: bold} 
  18. .submit-signin .btn-primary{width: 100px;} 
  19. .submit-signin .btn-mini{margin-right: 10px;} 
  20. </style> 

对了,还有表单处需要一些参数,以下代码是调用参数的,代码如下:

  1. <?php 
  2.     global $current_user
  3.     get_currentuserinfo(); 
  4.     $cur_id    = $current_user->ID; 
  5.     $user_info = get_userdata($cur_id); 
  6.     $u_login   = $user_info->user_login; 
  7.     $u_mail    = $user_info->user_email; 
  8.     $u_time    = $user_info->user_registered; 
  9.     $u_name    = get_user_meta($cur_id,'nickname',true); 
  10. ?> 

好了,应该差不多了,我以经毫无保留的把代码贴出来了,能不能实现就要看你的造化了,至于如何提交,那是本站的核心代码,这个本站恕不分享.

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表