每天都是自己更新文章,感覺有點累,也不能很好的和關注的朋友做到很好的互動,給自己的博客添加了一個投稿功能,這樣關注的朋友也可以給自己的博客寫文章,何樂而不為呢?
這裏就提供兩種方法實現:
1 、插件實現
WordPress 之所以強大就是因為有無數個插件,可以實現很多功能,所以投稿也是可以用插件實現的;
推薦插件:submit post 或 ucan post;
然而大家都明白,無論多麼簡單的插件,裏面都會有很多沒用的東西,這些會拖慢我們網站的運行速度,所以不得已,應儘量少使用插件,本文對插件的實現就不再累述,非插件實現才是本文的重點。
2 、代碼實現 (推薦)
步驟如下:
a 、在主題文件夾下面新建一個 【tougao.php 】文件,把主題文件 page.php 裏面的代碼全選複製到文件中;
b 、打開新建文件,在第一個 【< ?php 】代碼 (一般是 ) 後面敲幾個回車,然後把以下代碼粘貼進來:
/*
Template Name: 投稿模板
*/
if( isset($_POST['tougao_form']) && $_POST['tougao_form'] == 『send』)
{
global $wpdb;
$last_post = $wpdb->get_var(「SELECT post_date FROM $wpdb->posts WHERE post_type = 『post』 ORDER BY post_date DESC LIMIT 1″);
// 博客當前最新文章發佈時間與要投稿的文章至少間隔 120 秒。
// 可自行修改時間間隔,修改下面代碼中的 120 即可
// 相比 Cookie 來驗證兩次投稿的時間差,讀數據庫的方式更加安全
if ( current_time(『timestamp』) – strtotime($last_post) < 120 )
{
wp_die(『您投稿也太勤快了吧,先歇會兒!』);
}// 表單變量初始化
$name = isset( $_POST['tougao_authorname'] ) ? trim(htmlspecialchars($_POST['tougao_authorname'], ENT_QUOTES)) : 」;
$email = isset( $_POST['tougao_authoremail'] ) ? trim(htmlspecialchars($_POST['tougao_authoremail'], ENT_QUOTES)) : 」;
$blog = isset( $_POST['tougao_authorblog'] ) ? trim(htmlspecialchars($_POST['tougao_authorblog'], ENT_QUOTES)) : 」;
$title = isset( $_POST['tougao_title'] ) ? trim(htmlspecialchars($_POST['tougao_title'], ENT_QUOTES)) : 」;
$category = isset( $_POST['cat'] ) ? (int)$_POST['cat'] : 0;
$content = isset( $_POST['tougao_content'] ) ? trim(htmlspecialchars($_POST['tougao_content'], ENT_QUOTES)) : 」;// 表單項數據驗證
if ( empty($name) || mb_strlen($name) > 20 )
{
wp_die(『暱稱必須填寫,且長度不得超過 20 字』);
}if ( empty($email) || strlen($email) > 60 || !preg_match(「/^([a-z0-9+_-]+)(.[a-z0-9+_-]+)*@([a-z0-9-]+.)+[a-z]{2,6}$/ix」, $email))
{
wp_die(『Email 必須填寫,且長度不得超過 60 字,必須符合 Email 格式』);
}if ( empty($title) || mb_strlen($title) > 100 )
{
wp_die(『標題必須填寫,且長度不得超過 100 字』);
}if ( empty($content) || mb_strlen($content) > 3000 || mb_strlen($content) < 100)
{
wp_die(『內容必須填寫,且長度不得超過 3000 字,不得少於 100 字』);
}$post_content = 『暱稱: 『.$name.』<br />Email: 『.$email.』<br />blog: 『.$blog.』<br /> 內容:<br />』.$content;
$tougao = array(
『post_title』 => $title,
『post_content』 => $post_content,
『post_category』 => array($category)
);
// 將文章插入數據庫
$status = wp_insert_post( $tougao );if ($status != 0)
{
// 投稿成功給博主發送郵件
// somebody#example.com 替換博主郵箱
// My subject 替換為郵件標題,content 替換為郵件內容
wp_mail(「somebody#example.com」,」My subject」,」content」);
wp_die(『投稿成功!感謝投稿!』, 『投稿成功』);
}
else
{
wp_die(『投稿失敗!』);
}
}
c 、找到 page.php 裏面的文章內容調用代碼,一般是 【< ?php the_content(); ?> 】,在後面粘貼以下表單代碼:
<form id=」tougaoform」 method=」post」 action=」<?php echo $_SERVER["REQUEST_URI"]; ?>」>
<p><input id=」author」 type=」text」 size=」40″ value=」" name=」tougao_authorname」 /><label> 暱稱 (*必填)</label></p>
<p><input id=」email」 type=」text」 size=」40″ value=」" name=」tougao_authoremail」 /><label> 郵箱 (*必填)</label></p>
<p><input id=」url」 type=」text」 size=」40″ value=」" name=」tougao_authorblog」 /><label> 您的博客/文章來源</label></p>
<p><input id=」tougao_title」 type=」text」 size=」40″ value=」" name=」tougao_title」 /><label> 文章標題 (*必填)</label></p>
<p><input id=」tags」 type=」text」 size=」40″ value=」" name=」tougao_tags」 /><label> 文章標籤 (多個標籤請用英文逗號 , 分開)</label></p>
<p><?php wp_dropdown_categories(『show_option_none=請選擇文章分類&show_count=1& hierarchical=1&hide_empty=0′); ?><label> 文章分類 (*必填)</label></p>
<textarea rows=」15″ cols=」55″ id=」tougao」 name=」tougao_content」></textarea>
<p>
<input type=」hidden」 value=」send」 name=」tougao_form」 />
<input id=」submit」 type=」submit」 value=」 提交」 />
<input id=」reset」 type=」reset」 value=」 重填」 />
</p>
</form>
OK!投稿頁面已經完工,下面看怎麼用?
現在去 WordPress 後台新建一個 page 頁面吧 (需注意:主題必須支持 page 頁面),可以隨便寫一個標題,比如 「歡迎投稿」,然後在內容裏面寫上你的投稿要求,下面這步操作最重要:
在頁面發佈下面有一個頁面屬性,這個就是你剛才加那個文件的作用,然後在 【模板】 裏面選擇 【投稿模板】;
大功告成,去網站看一下效果吧!
好了,去發佈一篇試試吧,發佈後會自動存儲為網站 【草稿】,可以編輯發佈,當然你如果想直接發佈,就把 「b」 步驟下面的代碼:
『post_content』 => $post_content,
替換為:
『post_content』 => $post_content,
『post_status』 => 『publish』,
不過不太推薦,畢竟投放的文章良莠不齊,還是審核一下比較好。