·您现在的位置: 云翼网络 >> 文章中心 >> 网站建设 >> 网站建设问答 >> 分享wordpress添加游客投稿页面功能

分享wordpress添加游客投稿页面功能

作者:佚名      网站建设问答编辑:admin      更新时间:2022-07-23

相信有不少站长朋友都或多或少接触过wordpress吧,其中很多人都需要一个投稿页面,当然其中好处不言而喻了。网上有的投稿插件是英文的,有的类似于留言本,有的会显示乱码,而今天笔者就教大家自己做一个插件来实现投稿功能。

首先新建submit_posts_ajax.php,将以下内容复制进去:

<?php function submit_posts_ajax(){          if($_POST['submit_posts_ajax']=='yinheli'){          $title=strip_tags(trim($_POST['post_title']));          $name=trim($_POST['your_name']);          $mail=trim($_POST['your_email']);          $site=trim($_POST['your_site']);          $content=stripslashes(trim($_POST['post_content']));          $tags=strip_tags(trim($_POST['post_tags']));                             global $wpdb;                    $db="SELECT post_title FROM $wpdb->posts WHERE post_title = '$title' LIMIT 1";                    if ($wpdb->get_var($db)){                             echo '<div class="ps_errormsg">发现重复文章.你已经发表过了.或者存在该文章</div>';                             die();                    }                             if(!empty($site)){                             if(substr($site, 0, 7) != 'http://') $site= 'http://'.$site;                    $author='<a href="'.$site.'" title="'.$name.'">'.$name.'</a>';                    }else{                    $author=$name;          }          $info='<div class="post_submit_info">感谢: '.$author.' 的供稿.</div>'."\n\n";          if(isset($_POST['post_submit'])){                    //错误判断                    if($title==''){                    echo '<div class="ps_errormsg">错误:没有填写标题!</div>';                    die();                    }                    elseif($mail==''){                    echo '<div class="ps_errormsg">错误:没有填写邮箱地址.</div>';                    die();                    }                    elseif($content==''){                    echo '<div class="ps_errormsg">错误:还没有填写内容!!!</div>';                    die();                    }else{                    //提交数据                    $content=$info.$content;                  $submitdata=array(                             'post_title'        =>$title,                             'post_content' =>$content,                             'tags_input'      =>$tags,                             'post_status'   => 'pending'                    );                    $post_id = wp_insert_post($submitdata,$wp_error = false);                    $subject='您给[ '.get_option('blogname').' ]写了篇文章 标题是: '.$title;                    $message='非常感谢您的供稿.您的稿件已经提交.等待管理员的审核. 以下是您提交的内容:<hr>'.stripslashes(trim($_POST['post_content']));                    yinheli_sendmail_ps($mail,$subject,$message);                    echo '<div class="ps_msg">非常感谢您的供稿.您的稿件已经提交.等待管理员的审核.请耐心等待.</div>';                    @header('Content-type: ' . get_option('html_type') . '; charset=' . get_option('blog_charset'));                    die();                    }          }          if(isset($_POST['post_review'])){                    if(''==$content){                    echo '还没有填写内容';                    die();                    }                    if(''==$tags) $tags='您还没有填写 标签 (Tags)';                    echo '<div class="ps_reviewmsg">                             <h2>'.$title.'</h2>                             <div class="ps_reviewcontent">                                      '.$info.$content.'                                      <p class="ps_reviewtags">标签:'.$tags.'</p>                             </div>                    </div>';                    die();          }          die();          }   } function yinheli_sendmail_ps($to,$subject,$message){          $blogname = get_option('blogname');          $charset = get_option('blog_charset');          $ps_sendmail_headers = "From: $blogname \n" ;          $ps_sendmail_headers .= "MIME-Version: 1.0\n";          $ps_sendmail_headers .= "Content-Type: text/html;charset=\"$charset\"\n";          return @wp_mail($to, $subject, $message, $ps_sendmail_headers); }   function submit_posts_load_js(){ echo "\n".'<script type="text/javascript" src="' . get_bloginfo('wpurl') . '/wp-content/plugins/submit_posts/submit_posts.js"></script>'."\n"; } add_action('init', 'submit_posts_ajax'); require_once('submit_posts.php'); function submit_posts_display(){ submit_posts_load_js(); $submit_posts_html=submit_posts_html(); return $submit_posts_html; } add_shortcode('submit_posts','submit_posts_display'); ?>

接下来新建submit_posts.php,同样将以下内容复制进去:

<script type="text/javascript"> <!--          //--> </script><?php function submit_posts_html(){  ob_end_clean();  ob_start(); ?> <div id="ps_msg">欢迎给我供稿</div> <form id="post_submit_form" name="post_submit_form" method="post" action=""> <div class="row"> <input type="hidden" name="submit_posts_ajax" id="submit_posts_ajax" value="yinheli"/>   <label><input type="text" name="post_title" id="post_title" tabindex="1" value="<?php echo strip_tags($_POST['post_title']);?>"/> 投稿标题(必填)</label> </div>   <div class="row"> <label><input type="text" name="your_name" id="your_name" tabindex="2" value="<?php echo $_POST['your_name'];?>" /> 您的名字或昵称</label> </div>   <div class="row"> <label><input type="text" name="your_email" id="your_email" tabindex="3" value="<?php echo $_POST['your_email'];?>" /> 您的邮箱(必填)</label> </div>   <div class="row"> <label><input type="text" name="your_site" id="your_site" tabindex="4" value="<?php echo $_POST['your_site'];?>" /> 您的网站</label> </div>     <div class="row"> <textarea name="post_content" cols="50" rows="15" id="post_content" tabindex="5"><?php echo stripslashes($_POST['post_content']);?></textarea> </div>   <div class="row"> <label><input type="text" name="post_tags" id="post_tags" tabindex="6" value="<?php echo strip_tags($_POST['post_tags']);?>" /> 标签(tags)[每个标签用半角的逗号分开]</label> </div>   <div id="submit_post"> <input type="submit" name="post_review" id="post_review" value="预览" tabindex="7" /> <input type="submit" name="post_submit" id="post_submit" value="提交" tabindex="8" /> </div> <div style="clear:both"></div> </form> <?php  $html=ob_get_contents();  ob_end_clean(); return $html; } ?>

最后再新建submit_posts.js,将以下内容复制进去:

/* Author: 89948 Update: 2009/04/11 Author URI: http://www.89948.net/ */ (function(){ if(!window.YHLJSPS) window['YHLJSPS']={}; function isCompatible(other) {          if( other===false                    || !Array.prototype.push                    || !Object.hasOwnProperty                    || !document.createElement                    || !document.getElementsByTagName                    ) {                    alert('TR- if you see this message isCompatible is failing incorrectly.');                    return false;          }          return true; }   function $(id){ return document.getElementById(id); }   var xmlHttp; function getXmlHttpObject(){          var xmlHttp = null;          try {                    xmlHttp = new XMLHttpRequest();          } catch(e) {                    try {                             xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");                    } catch(e) {                             xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");                    }          }          return xmlHttp; } function setStyle(element, key, value) {          element.style[key] = value; }   function addEvent(node,type,listener){          if(!isCompatible()) { return false }          if(node.addEventListener){          node.addEventListener(type,listener,false);          return true;          }else if(node.attachEvent){          node['e'+type+listener]=listener;          node[type+listener]=function(){                    node['e'+type+listener](window.event);                    }                    node.attachEvent('on'+type,node[type+listener]);                    return true;          } }   function insertAfter(node, referenceNode) {     if(!(node = $(node))) return false;     if(!(referenceNode = $(referenceNode))) return false;         return referenceNode.parentNode.insertBefore(node, referenceNode.nextSibling); };   function preventDefault(eventObject) {          eventObject = eventObject || getEventObject(eventObject);          if(eventObject.preventDefault) {                    eventObject.preventDefault();          } else {                    eventObject.returnValue = false;          } }   function formToRequestString(form_obj,val){          var query_string='';          var and='&';          for (i=0;i<form_obj.length ;i++ ){                    e=form_obj[i];                    if (e.name!='' && e.type!='submit'){                             if (e.type=='select-one'){                                      element_value=e.options[e.selectedIndex].value;                             }else if (e.type=='checkbox' || e.type=='radio'){                                      if (e.checked==false){                                                break;                                            }element_value=e.value;                             }else{                                      element_value=e.value;                             }                             query_string+=and+encodeURIComponent(e.name)+'='+encodeURIComponent(element_value);                    }          }          return query_string; }   function setopacity(node,opacity){ setStyle(node, 'opacity', opacity); setStyle(node, 'MozOpacity', opacity); setStyle(node, 'KhtmlOpacity', opacity); setStyle(node, 'filter', 'alpha(opacity=' + opacity * 100 + ')'); return; }   function stateChangeListener(){ var r_msg=$('ps_msg'); var the_form=$('post_submit_form');            if(xmlHttp.readyState==1){          r_msg.innerHTML='数据载入中,请稍候...';          setopacity(the_form,0.8);          $('post_submit').disabled=true;          window.scrollTo(0,r_msg.offsetTop+15);          }else if(xmlHttp.readyState==4 && xmlHttp.status==200){          r_msg.innerHTML=xmlHttp.responseText;          setopacity(the_form,1);          setTimeout(function(){$('post_submit').disabled=false;},1000);          }else if(xmlHttp.status!=200){                    alert('呃 出错了 (建议您保存好文章再刷新浏览器.) 错误信息:'+xmlHttp.statusText);          } }   function submitactiontype(type){ var A=formToRequestString($('post_submit_form'))+'&'+encodeURIComponent($(type).name)+'='+encodeURIComponent($(type).value); return A; }   function ps_submit(action){          xmlHttp = getXmlHttpObject();          if (xmlHttp == null) {                    alert ("Oop! Browser does not support HTTP Request.")                    return;          }          var url=window.location.href;          if(action=='post_submit'){                    var senddata=submitactiontype(action);          }          if(action=='post_review'){                    var senddata=submitactiontype(action);          }          xmlHttp.onreadystatechange=function(){                    stateChangeListener();          }          xmlHttp.open("POST", url, true);          xmlHttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded');          xmlHttp.send(senddata); }   function initps(){          addEvent($('post_submit'),'click',function(W3CEvent){                    ps_submit(action='post_submit');                    //alert(action);                    preventDefault(W3CEvent);          });          addEvent($('post_review'),'click',function(W3CEvent){                    ps_submit(action='post_review');                    //alert(action);                    preventDefault(W3CEvent);          }); } if (document.addEventListener) {          document.addEventListener("DOMContentLoaded", initps, false);   } else if (/MSIE/i.test(navigator.userAgent)) {          document.write('<script id="__ie_onload_for_post_posts" defer src="javascript:void(0)"></script>');          var script = $('__ie_onload_for_post_posts');          script.onreadystatechange = function() {                    if (this.readyState == 'complete') {                             initps();                    }          }   } else if (/WebKit/i.test(navigator.userAgent)) {          var _timer = setInterval( function() {                    if (/loaded|complete/.test(document.readyState)) {                             clearInterval(_timer);                             initps();                    }          }, 10); } else {          window.onload = function(e) {                    initps();          } }   })();

把以上三个文件保存在submit_posts文件夹内,上传至插件目录,并进后台安装该插件。使用时只需要新建页面并输入[submit_posts]即可调用出。

本文由www.89948.net 站长供稿转载请注明来源,谢谢!