每天都是自己更新文章,感覺有點累,也不能很好的和關注的朋友做到很好的互動,給自己的部落格新增了一個投稿功能,這樣關注的朋友也可以給自己的部落格寫文章,何樂而不為呢?
這裡就提供兩種方法實現:
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』,

不過不太推薦,畢竟投放的文章良莠不齊,還是稽核一下比較好。