相信有不少站长朋友都或多或少接触过wordpress吧,其中很多人都需要一个投稿页面,当然其中好处不言而喻了。网上有的投稿插件是英文的,有的类似于留言本,有的会显示乱码,而今天笔者就教大家自己做一个插件来实现投稿功能。
首先新建submit_posts_ajax.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 '
die();
}
if(!empty($site)){
if(substr($site, 0, 7) != 'http://') $site= 'http://'.$site;
$author=''.$name.'';
}else{
$author=$name;
}
$info='
if(isset($_post['post_submit'])){
//错误判断
if($title==''){
echo '
die();
}
elseif($mail==''){
echo '
die();
}
elseif($content==''){
echo '
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='非常感谢您的供稿.您的稿件已经提交.等待管理员的审核. 以下是您提交的内容:
yinheli_sendmail_ps($mail,$subject,$message);
echo '
@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 '
'.$info.$content.'
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.''.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,同样将以下内容复制进去:
function submit_posts_html(){
ob_end_clean();
ob_start();
?>
$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 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(''); 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]即可调用出。