類別 | 學習心得

WordPress評論回應郵件通知

這還是在《Willin Kan 的博客》挖到的寶,也就是當A回應B發表的評論,系統會發一封E-Mail通知B,這樣可以增加該篇文章的評論互動,當然,你的伺服器一定要有 mail() 功能哦!

評論新增回應郵件通知及表情圖  這個不是插件,只要修改你使用中佈景的 functions.php 檔案,將代碼放置 <?php ….. ?> 區域內即可,《Wordpress評論回應郵件通知》的代碼有三種,請依需求點取下面的標題:

  1. 有勾選欄位,由訪客決定是否要回應郵件通知。
  2. 無勾選欄位,由管理者決定在什麼條件下發郵件。
  3. 所有回覆都發郵件。

  先補充說明,如果你使用的佈景主題,評論式樣是使用 comments 和 trackbacks/pingbacks 分離(如原木使用的主題),請將下面所有的:  

[code lang=”php”]get_comment_link($parent_id)[/code]

  修改成:  

[code lang=”php”]get_comment_link($parent_id, array(‘type’ => ‘comment’))[/code]


  有勾選欄位,由訪客決定是否要回應郵件通知

(會在模板自動加勾選欄,如果不想自動加,可把後面一小段刪除。)

[code lang=”php”]/* comment_mail_notify v1.0 by willin kan. (有勾選欄, 由訪客決定) */
function comment_mail_notify($comment_id) {
$admin_notify = ‘1’; // admin 要不要收回覆通知 ( ‘1’=要 ; ‘0’=不要 )
$admin_email = get_bloginfo (‘admin_email’); // $admin_email 可改為你指定的 e-mail.
$comment = get_comment($comment_id);
$comment_author_email = trim($comment->comment_author_email);
$parent_id = $comment->comment_parent ? $comment->comment_parent : ”;
global $wpdb;
if ($wpdb->query("Describe {$wpdb->comments} comment_mail_notify") == ”)
$wpdb->query("ALTER TABLE {$wpdb->comments} ADD COLUMN comment_mail_notify TINYINT NOT NULL DEFAULT 0;");
if (($comment_author_email != $admin_email && isset($_POST[‘comment_mail_notify’])) || ($comment_author_email == $admin_email && $admin_notify == ‘1’))
$wpdb->query("UPDATE {$wpdb->comments} SET comment_mail_notify=’1′ WHERE comment_ID=’$comment_id’");
$notify = $parent_id ? get_comment($parent_id)->comment_mail_notify : ‘0’;
$spam_confirmed = $comment->comment_approved;
if ($parent_id != ” && $spam_confirmed != ‘spam’ && $notify == ‘1’) {
$wp_email = <a href="mailto:’no-reply@’">’no-reply@'</a> . preg_replace(‘#^www.#’, ”, strtolower($_SERVER[‘SERVER_NAME’])); // e-mail 發出點, no-reply 可改為可用的 e-mail.
$to = trim(get_comment($parent_id)->comment_author_email);
$subject = ‘您在 [‘ . get_option("blogname") . ‘] 的留言有了回應’;
$message = ‘
<div style="background-color:#eef2fa; border:1px solid #d8e3e8; color:#111; padding:0 15px; -moz-border-radius:5px; -webkit-border-radius:5px; -khtml-border-radius:5px;">
<p>’ . trim(get_comment($parent_id)->comment_author) . ‘, 您好!</p>
<p>您曾在《’ . get_the_title($comment->comment_post_ID) . ‘》的留言:<br />
‘ . trim(get_comment($parent_id)->comment_content) . ‘</p>
<p>’ . trim($comment->comment_author) . ‘ 給您的回應:<br />
‘ . trim($comment->comment_content) . ‘<br /></p>
<p>您可以點擊 <a href="’ . htmlspecialchars(get_comment_link($parent_id)) . ‘">查看回應完整內容</a></p>
<p>歡迎再度光臨 <a href="’ . get_option(‘home’) . ‘">’ . get_option(‘blogname’) . ‘</a></p>
<p>(此郵件由系統自動發出, 請勿回覆.)</p>
</div>’;
$from = "From: "" . get_option(‘blogname’) . "" <$wp_email>";
$headers = "$fromnContent-Type: text/html; charset=" . get_option(‘blog_charset’) . "n";
wp_mail( $to, $subject, $message, $headers );
//echo ‘mail to ‘, $to, ‘<br/> ‘ , $subject, $message; // for testing
}
}
add_action(‘comment_post’, ‘comment_mail_notify’);
/* 自動加勾選欄 */
function add_checkbox() {
echo ‘<input type="checkbox" name="comment_mail_notify" id="comment_mail_notify" value="comment_mail_notify" checked="checked" style="margin-left:20px;" /><label for="comment_mail_notify">有人回覆時郵件通知我</label>’;
}
add_action(‘comment_form’, ‘add_checkbox’);
// — END —————————————-[/code]

無勾選欄位,由管理者決定在什麼條件下發郵件

[code lang=”php”]/* comment_mail_notify v1.0 by willin kan. (無勾選欄) */
function comment_mail_notify($comment_id) {
$admin_email = get_bloginfo (‘admin_email’); // $admin_email 可改為你指定的 e-mail.
$comment = get_comment($comment_id);
$comment_author_email = trim($comment->comment_author_email);
$parent_id = $comment->comment_parent ? $comment->comment_parent : ”;
$to = $parent_id ? trim(get_comment($parent_id)->comment_author_email) : ”;
$spam_confirmed = $comment->comment_approved;
if (($parent_id != ”) && ($spam_confirmed != ‘spam’) && ($to != $admin_email) && ($comment_author_email == $admin_email)) {
/* 上面的判斷式,決定發出郵件的必要條件:
($parent_id != ”) && ($spam_confirmed != ‘spam’): 回覆的, 而且不是 spam 才可發, 必需!!
($to != $admin_email) : 不發給 admin.
($comment_author_email == $admin_email) : 只有 admin 的回覆才可發.
可視個人需求修改以上條件.
*/
$wp_email = <a href="mailto:’no-reply@’">’no-reply@'</a> . preg_replace(‘#^www.#’, ”, strtolower($_SERVER[‘SERVER_NAME’])); // e-mail 發出點, no-reply 可改為可用的 e-mail.
$subject = ‘您在 [‘ . get_option("blogname") . ‘] 的留言有了回應’;
$message = ‘
<div style="background-color:#eef2fa; border:1px solid #d8e3e8; color:#111; padding:0 15px; -moz-border-radius:5px; -webkit-border-radius:5px; -khtml-border-radius:5px;">
<p>’ . trim(get_comment($parent_id)->comment_author) . ‘, 您好!</p>
<p>您曾在《’ . get_the_title($comment->comment_post_ID) . ‘》的留言:<br />
‘ . trim(get_comment($parent_id)->comment_content) . ‘</p>
<p>’ . trim($comment->comment_author) . ‘ 給您的回應:<br />
‘ . trim($comment->comment_content) . ‘<br /></p>
<p>您可以點擊 <a href="’ . htmlspecialchars(get_comment_link($parent_id)) . ‘">查看回應完整內容</a></p>
<p>歡迎再度光臨 <a href="’ . get_option(‘home’) . ‘">’ . get_option(‘blogname’) . ‘</a></p>
<p>(此郵件由系統自動發出, 請勿回覆.)</p>
</div>’;
$from = "From: "" . get_option(‘blogname’) . "" <$wp_email>";
$headers = "$fromnContent-Type: text/html; charset=" . get_option(‘blog_charset’) . "n";
wp_mail( $to, $subject, $message, $headers );
echo ‘mail to ‘, $to, ‘<br/> ‘ , $subject, $message; // for testing
}
}
add_action(‘comment_post’, ‘comment_mail_notify’);
// — END —————————————-[/code]

所有回覆都發郵件

(在底層的評論不發郵件,回覆的才會發。)
[code lang="php"]/* comment_mail_notify v1.0 by willin kan. (所有回覆都發郵件) */
function comment_mail_notify($comment_id) {
$comment = get_comment($comment_id);
$parent_id = $comment->comment_parent ? $comment->comment_parent : '';
$spam_confirmed = $comment->comment_approved;
if (($parent_id != '') && ($spam_confirmed != 'spam')) {
$wp_email = 'no-reply@' . preg_replace('#^www.#', '', strtolower($_SERVER['SERVER_NAME'])); //e-mail 發出點, no-reply 可改為可用的 e-mail.
$to = trim(get_comment($parent_id)->comment_author_email);
$subject = '您在 [' . get_option("blogname") . '] 的留言有了回應';
$message = '
<div style="background-color:#eef2fa; border:1px solid #d8e3e8; color:#111; padding:0 15px; -moz-border-radius:5px; -webkit-border-radius:5px; -khtml-border-radius:5px;">
<p>' . trim(get_comment($parent_id)->comment_author) . ', 您好!</p>
<p>您曾在《' . get_the_title($comment->comment_post_ID) . '》的留言:<br />
' . trim(get_comment($parent_id)->comment_content) . '</p>
<p>' . trim($comment->comment_author) . ' 給您的回應:<br />
' . trim($comment->comment_content) . '<br /></p>
<p>您可以點擊 <a href="' . htmlspecialchars(get_comment_link($parent_id)) . '">查看回應完整內容</a></p>
<p>歡迎再度光臨 <a href="' . get_option('home') . '">' . get_option('blogname') . '</a></p>
<p>(此郵件由系統自動發出, 請勿回覆.)</p>
</div>';
$from = "From: "" . get_option('blogname') . "" <$wp_email>";
$headers = "$fromnContent-Type: text/html; charset=" . get_option('blog_charset') . "n";
wp_mail( $to, $subject, $message, $headers );
//echo 'mail to ', $to, '<br/> ' , $subject, $message; // for testing
}
}
add_action('comment_post', 'comment_mail_notify');
// -- END ----------------------------------------[/code]


  ~ That's all ~
☆★相關文章★☆
如何在 WordPress 做一個歡迎頁
今天開始來到我們家有一個新的大門了,由於我們有兩個部落格系統,舊的部落格是用 F2cont 架的,新的則是現在使用的 Wordpress,為了讓大家選擇要去我們的哪一個家,所以好友小潘幫我們家設計了一個歡迎頁。  Wordpress 的首頁是抓自己的 index.php,所以大家輸入網址後一定是讀取 index.php,這樣歡迎頁的 index.html 就無法當作第一個頁面來讀取,而 Wordpress 又會一直循環調用 index.php,如果更改 .htaccess 將首頁設定使用 index.html,那麼落格的文章就叫不出來了,怎麼辦呢?很簡單 ... 以下 Step by step: 將下面的代碼增加到根目錄的 .htaccess:[code lang="php"]<IfModule dir_module>DirectoryIndex index.html index.php</IfModule>[/code] 修改 wp-includes/rewrite.php 檔案,找到下面的敘述:[code lang="php"]var $index = ...
繼續閱讀
利用CSS讓有超連結圖案出現透明效果
今天在「WordPress 研究者日記」看到這篇「CSS透明特效:opacity」的文章,就是利用CSS的opacity語法,讓滑鼠移到有超連結的圖案上時,該圖案會出現透明的效果。  將以下代碼加入到 wp-content/themes/當前使用的佈景主題/style.css 檔案:[code lang="css"]a:hover img{ opacity: 0.55; filter:alpha(opacity=55); /* IE only */}[/code]  說明上面的數值,數值為「1」代表不透明,所以數值越小就越透明,而filter:alpha那段是給IE瀏覽器用的,數值為「100」代表不透明。  ~ That’s all ~
繼續閱讀
使用Facebook Connect將WP與FB完整結合(中)
其實安裝Facebook Connect真的非常簡單,但是原木在安裝過程中卻遇到了問題,就是在登入過程中始終對應不到我Facebook的應用程式,昨天花了一整天的時間研究,終於讓原木找到了問題,解決之後心情快~樂~的~不~得~了~  ^^  原木的問題有二,第1個問題是Facebook韓德爾の原木粉絲專頁,第2個則是Wordpress的 1 Blog Cacher 插件。  關於第1個問題,在我們部落格側邊欄位的「Communities」是利用Highslide JS效果呈現的,其中第7個是顯示我們部落格在Facebook的粉絲,因為有使用 <script type="text/javascript">FB.init("e320a5c35f3157b68b1e5e3f0f6563a9");</script> 語法,而在Facebook Connect中也有設定API金鑰,結果造成同一個頁面出現兩個API金鑰,導致在登入FB時一直指向粉絲的專頁,這個超讓原木抓狂的,想說明明API金鑰跟秘密都設定對了,為何都無法指向我在FB的應用程式,後來原木就利用Java Script另開新視窗,就解決囉!  第2個問題很簡單,換掉 1 Blog Cacher,改用 WP Super Cache,在裝好該插件後,找到部落格根目錄 .htaccess 檔案下面的敘述:[code]RewriteCond %{HTTP:Cookie} !^.*(comment_author_|wordpress|wp-postpass_).*$[/code]  將她改成:[code]RewriteCond %{HTTP:Cookie} !^.*(comment_author_|wordpress|wp-postpass_|YOURAPIKEY_user).*$[/code]  其中「YOURAPIKEY」就是輸入你Facebook應用程式的API金鑰,記得後面要加「_user」,這樣在使用Facebook Connect登入時就不會被快取。  原木特將遇到的問題筆記下來,希望能對安裝Facebook Connect的人有所幫助。^^
繼續閱讀
不看可惜的 … 八卦(限會員)
這篇文章是在「免費的喘息」討論區看到的,有人詢問 Wordpress 要如何做到文章僅註冊會員登入後才可以閱讀,雖然我們部落格文章的性質不會常用到,不過還是收錄供大家參考,至於完整的演示 ... 你已經體驗過了。 ^^  這個方法是在「WordPress 中如何设置只有注册用户才能浏览特定的内容」文章發表的,只要將下面的代碼存成 .php,在上傳到 wp-content/plugins 啟動這個插件即可:[code lang="php"]<?php/*Plugin Name: User onlyPlugin URI: http://fairyfish.net/2010/05/13/post-for-user-only/Description:通過給 user_only 這個自定義字段設置為 true 來設置當前文章僅限於會員瀏覽。Author: DenisVersion: 1.0Author URI: http://wpjam.com*/add_filter('the_content', 'post_user_only');function post_user_only($text){    global $post;       $user_only = ...
繼續閱讀
新增WordPress評論表情圖
這也還是在《Willin Kan 的博客》挖到的寶,一口氣在 Willin 大大挖到3個寶,還幫了原木修改代碼,真的很謝謝他。這是一個小而不用插件的Hack,就是在評論框出現所有的表情圖供訪客使用。  請先點 →這裡← 下載檔案,解壓縮後直接將 smiley.php 放在使用佈景的所在目錄,然後在 comments.php 的 textarea 的適當位置,加入以下的代碼:  [code lang="php"]<?php include(TEMPLATEPATH . '/smiley.php'); ?>[/code]  ~ That’s all ~
繼續閱讀
啟動WordPress的Gzip網頁壓縮功能
啟動Wordpress的Gzip網頁壓縮功能加快網頁讀取的速度有很多種方法,其中讓網頁在輸出時透過壓縮功能,即可加速開啟及減少等待時間,這項壓縮功能叫做「Gzip 網頁壓縮」。  網站啟用 Gzip 壓縮可以幫助網站瘦身,其原理是透過網站伺服器壓縮輸出大小再傳給 Client 端,Client 端的電腦再進行解壓縮,可以節省許多網路頻寬,而啟動 Wordpress 的 Gzip 網頁壓縮功能有 2 種方法,以下: 透過 PHP:使用此方法的前提是伺服器須有支援「Zlib Compression Functions」,且當 WordPress 版本更新時,必須再重新加入此語法。修改的檔案是 Wordpress 根目錄的 index.php,請該檔案的「<?php」之後加入「ob_start('ob_gzhandler');」語法即可。 利用 .htaccess:這方法是透過 Apache 的「Enabling Compression」,請在 Wordpress  根目錄的 .htaccess 檔案加入以下語法(如果沒有請自行建立):[code lang="php"]<IfModule ...
繼續閱讀
熊熊腥射烤秋慶房間及烤肉分組事宜
起(Key)秋、腥射、烤肉趴,這一天讓我們白天洗滌心靈,晚上綻放腥零,除了知性之旅外,最香豔、刺激的烤秋慶,絕對腥射、火辣,還有「抖抖驚鴻舞」的Special Show,來悠 〜準備好一同到台中烤秋慶囉 〜〜再次提醒大家,11/10(六)早上07:50在捷運西門站1號出口集合,我們8點準時出發,請大家不要遲到哦 ^^台中之星沒有餐廳,所以飯店服務生會在早上九點將早餐送到大家的房間,本次下榻的房型如下: 總統炮房:4人房外加2床,共睡6人 2人房:外加1床,共睡3人 2人房:外加1床,共睡3人 2人房 2人房 2人房 2人房 3人房:外加1床,共睡4人 3人房:外加1床,共睡4人 3人房 4人房 4人房 4人房以上,共43人,請大家可以先行找好室友,週六在遊覽車上先協調、後抽籤 ^^另外,本次活動感謝以下工作人員的幫忙: 活動組:小麥、小寶 影音組:阿諾、Alex、Kevin、Simon 燈光組:小麥、黑傑特、柚子、Alex有關本次房間室友及烤肉分組如下(以下房間及烤肉分組的號碼僅供分組識別,非房間號碼及烤肉桌號): 序號小名臉書名稱參加本團房間分組 (號碼非房號)僅烤肉烤肉分組 (號碼非桌號)備註1小柏陳小柏V1A2小遠小遠小遠V1A3AlmaAlma ChouV1A4大牛台北大牛V2C5KevinBear KevinV2C6RaySugar RayV3F7金剛Milton KongV3F8TerryTerry BlackV3F9阿諾言若V4D10冠彰Macho PicchuV4D11James張太陽V5D12水水水水V5D13小馬蒙古馬V5D14小寶Minbo KoV6G15小排Beefrib BenV6F16小光Kuang WolfV6G17小麥Mike LinV6G18丹丹丹丹V7F19馬克Marc ChengV7F20StevenMyself BeV7F21TommyTommy LeeV7G床位給長江一號22TossToss HanV8G23TigerV8G24柚子柚子V8D25KevinV8F26黑傑特黑傑特V9A27子維子維V9A28GaryGary ...
繼續閱讀
將WordPress評論Ajax化
這是在《Willin Kan 的博客》這一篇「WordPress 內置嵌套評論專用 Ajax comments」文章挖到的寶,之前我們部落格使用F2cont也有將評論Ajax化,主要是發表評論後不需要再刷新頁面,就可以看到剛剛發表的評論,這樣可以降低系統的Loading,這對部落客真的是國寶級的好物。  有關安裝的步驟很簡單,請先點→這裡←下載程式,解壓縮後將這2個檔案放到你使用佈景的所在目錄,並修改使用佈景的 header.php: 找到[code lang="php"]<?php if ( is_singular() ) wp_enqueue_script( 'comment-reply' ); ?>[/code] 用下面幾行取代:[code lang="php"]<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.2.3/jquery.min.js"></script><?php if ( is_singular() ){ ?><script type="text/javascript" src="<?php bloginfo('template_directory'); ?>/comments-ajax.js"></script><?php } ?>[/code]  以上就完成嚕,如果你佈景的評論樣式夠標準,其它的都不用修改,由於我們部落格佈景的評論樣式不是很標準,所以直接使用安裝方法還是會出問題,而willin大大針對使用 ...
繼續閱讀
實現隱藏Header分頁的按鈕
新增一個Wordpress分頁總是會在Header上出現該分頁的按鈕,而如何新增一個分頁但又可以在Header上隱藏該分頁的按鈕?本篇文章教你如何辦到哦!  新增分頁並隱藏按鈕可以應用在「Google自訂搜尋」,昨天原木就將部落格的搜尋交給Google,大家可以利用部落格頂端的搜尋列,同時尋找我們新、舊部落格的文章、資料,搜尋結果會顯示在分頁上;另外,原木也將舊部落格上 Gallery 所有的相簿,利用 iframe 語法崁入到新部落格的 Gallery,這也是利用新增分頁並隱藏按鈕的具體做法。  很簡單,只要修改目前使用佈景的 header.php 檔案,尋找以下的代碼:[code lang="php"]<?php wp_list_pages('sort_column=menu_order&title_li=' ); ?>[/code]  舉例,假如要隱藏某 3 個分頁,到後台的「網誌分頁」一一查閱分頁的 ID,將滑鼠移到要隱藏的分頁,底下的狀態列即可看到該分頁的 ID(如右上圖所示),假設該3個分頁的 ID 分別為:123、456及789,將上面的代碼修改為:[code lang="php"]<?php wp_list_pages('exclude=123,456,789&sort_column=menu_order&title_li=' ); ?>[/code]  ~ That's all ~
繼續閱讀
避免WordPress自動加上nofollow標示
如果你也是部落客,通常在留下評論時,也都會順手將你部落格的網址留下,但偏偏Wordpress都會將你留下的網址,加上nofollow這段敘述,讓搜尋引擎完全不會理會,到底nofollow是什麼東東啊?  nofollow屬性最初是用在網頁層級的中繼標記裡,告訴搜尋引擎不要遵從(即檢索)網頁上的任何對外連結。為了鼓勵大家多多留言,原木怎麼可以讓最毒婦人心的「不要發肉蜜」,讓大家留下的網址白留呢?!況且,大家都喜歡「發肉蜜」啊,呵呵喝 ...  將nofollow敘述拿掉,除了可以利用 「NoFollow Free」外掛,也可以自行修改 wp-includes/comment-template.php 檔案,找到在第 140 行「function get_comment_author_link()」這一段,在第 148 行有個「$return = "<a rel="external nofollow" href="$url">$author</a>";」敘述,將nofollow拿掉就可以嚕,真的是快、狠、準 ~ That's all ~  我們已經拿掉nofollow了,相信對大家網站的 SEO 會有不少幫助,也希望大家多多留言啦! ^^後記  每次 Wordpress 更新都要手動改一次,還真的有點麻煩,所以建議使用外掛,有興趣的朋友可以到 http://wordpress.org/extend/plugins/nofollow-free/ 下載此外掛,若要中文化,可下載 http://images.steachs.com/Files/lang.zip 繁中語系。
繼續閱讀
如何在 WordPress 做一個歡迎頁
利用CSS讓有超連結圖案出現透明效果
使用Facebook Connect將WP與FB完整結合(中)
不看可惜的 … 八卦(限會員)
新增WordPress評論表情圖
啟動WordPress的Gzip網頁壓縮功能
熊熊腥射烤秋慶房間及烤肉分組事宜
將WordPress評論Ajax化
實現隱藏Header分頁的按鈕
避免WordPress自動加上nofollow標示


  • 阿亂

    原木 ~你好
    因blog 內容非常美觀 從f2blog 開始閱讀~ 進期發現 你已經轉為wordpress 想請教 ~不知用什麼方式會是最方便的轉移 謝謝分享 😛

    • 你好啊,我沒有把 F2 的資料移轉到 WP 喔,我 F2 還是有留著,因為要移轉資料太麻煩了。

      • 阿亂

        謝謝你的回覆 ~看來你的方法也很好~ 很coolㄛ~WP 會自動回信到我在評論留下的 mail~ 要改WP.要改WP……. 😛

  • 哇,刚想找就看到这篇文哦,感谢!

    • 很高興能幫到你的忙喔,你也可以到 willin 部落格逛逛,說不定還能挖到你想要的寶哦!