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

2019-03-22 04:16:55来源: tao.wuliao5.com 阅读 ()

新老客户大回馈,云服务器低至5折

相信有不少站长朋友都或多或少接触过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 站长供稿转载请注明来源,谢谢!

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:夏天天:从《我在赶集网的2个月》一文谈团队建设

下一篇:谷歌PR再次更新想到的那些事儿