标题 | 分享wordpress添加游客投稿页面功能 |
内容 | 相信有不少站长朋友都或多或少接触过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>'.nn; 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.0n; $ps_sendmail_headers .= content-type: text/html;charset=$charsetn; 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: */ (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]即可调用出。 |
随便看 |
|
在线学习网考试资料包含高考、自考、专升本考试、人事考试、公务员考试、大学生村官考试、特岗教师招聘考试、事业单位招聘考试、企业人才招聘、银行招聘、教师招聘、农村信用社招聘、各类资格证书考试等各类考试资料。