WordPress 添加前端站內信 Cartpauj PM


2014-04-29:該外掛長期不更新,已有另外一個作者將該外掛升級,並且改名為 Front End PM ,具體請看 WordPress 前端站內信外掛 Front End PM

之前推薦過《WordPress 站內信外掛:Private Messages For WordPress》該外掛功能還是比較齊全的,如果是在WP後臺使用的話,還相當不錯,但是如果想在前端使用,就沒那麼簡單瞭,雖然作者提供瞭一個簡單的樣版,但是測試發現,前端使用真的存在很多問題。而且該外掛已將近一年沒有更新瞭,沒有後續支援的外掛,也是個麻煩事。

所以今天要推薦一個專門在前端使用的站內信外掛:Cartpauj PM,該外掛後臺隻有簡單的設置選項,所有功能都是在前臺使用。

主要特色:

支援管理員設置用戶的信箱容量;支援管理員給所有用戶發送公告;有新信息時可以郵件通知;支援用戶自己設置是否接收信息、是否郵件通知;對話式的信息回復,信息交流一目瞭然;采用所見即所得的BBcode(UBB)編輯器;羅列所用用戶,方便一鍵點擊發佈信息

有待提高:

前端效果實在不是一般差;收件人使用的是用戶名 username,而不是顯示名display_name(一般網站都隻顯示用戶的顯示名),所以發站內信需要知道對方的用戶名;目前不支援上傳附件(作者計劃實現)要是可以添加後臺使用就完美瞭

已知問題:

信息的發送時間默認使用的是 格林尼治標準時間(GMT),和國內時間相差 8 小時。要修復這個問題,打開 pm-class.php 找到

current_time(‘mysql’, $gmt = 1) 將 $gmt = 1 改為 $gmt = 0  (似乎共有3處)。

默認前端顯示效果:

cartpauj-pm-wpdaxue_com

對話式的信息流(已經過美化):

cartpauj-pm-0-wpdaxue_com

具體效果,請登錄 WordPress大學 查看站內信。

在後臺外掛安裝界面搜索 Cartpauj PM 即可線上安裝,或者下載 Cartpauj PM

分享一些有用的調用代碼:

1.調用最新公告

將代碼添加到主題的 functions.php 或外掛文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
/**
 * 調用cartpauj_pm的公告
 */
function getLastAnnouncement(){
	global $wpdb; 
	// message_read = 12 表明這條是公告
	$results = $wpdb->get_results($wpdb->prepare("SELECT * FROM ". $wpdb->prefix ."cartpauj_pm_messages WHERE message_read = 12 ORDER BY id DESC LIMIT 0 , 1" , '' ));
	return $results;
}
function the_getLastAnnouncement(){
	$announcements = getLastAnnouncement();
	foreach ($announcements as $announcement)
	{
		$announce .= "<b>".$announcement->message_title."</b>: "; // 顯示公告標題
		$announce .=" <small>(".$announcement->date.")</small>"; //顯示公告日期
		$announce .= $announcement->message_contents; // 顯示公告內容
	}
	return $announce;
}

/**
* 調用cartpauj_pm的公告
*/
function getLastAnnouncement(){
global $wpdb;
// message_read = 12 表明這條是公告
$results = $wpdb->get_results($wpdb->prepare("SELECT * FROM ". $wpdb->prefix ."cartpauj_pm_messages WHERE message_read = 12 ORDER BY id DESC LIMIT 0 , 1" , ” ));
return $results;
}
function the_getLastAnnouncement(){
$announcements = getLastAnnouncement();
foreach ($announcements as $announcement)
{
$announce .= "<b>".$announcement->message_title."</b>: "; // 顯示公告標題
$announce .=" <small>(".$announcement->date.")</small>"; //顯示公告日期
$announce .= $announcement->message_contents; // 顯示公告內容
}
return $announce;
}

然後在需要顯示的地方使用下面的代碼調用:

1
<?php if(function_exists('the_getLastAnnouncement')) echo the_getLastAnnouncement(); ?>

<?php if(function_exists(‘the_getLastAnnouncement’)) echo the_getLastAnnouncement(); ?>

2.調用當前用戶未讀站內信數量

將下面的代碼添加到主題的 functions.php

1
2
3
4
5
6
7
8
9
10
11
12
/**
 * 獲取未讀站內信數量
 */
function unread_messages_number(){
	//如果用戶已登錄並且啟用瞭 cartpauj PM 外掛
	if(is_user_logged_in() && class_exists("cartpaujPM")){
		global $cartpaujPMS;
		$numNew = $cartpaujPMS->getNewMsgs();
		// 如有未讀信息就顯示提示內容
		if($numNew) echo "您有". $numNew ."條未讀信息"; 
	}
}

/**
* 獲取未讀站內信數量
*/
function unread_messages_number(){
//如果用戶已登錄並且啟用瞭 cartpauj PM 外掛
if(is_user_logged_in() && class_exists("cartpaujPM")){
global $cartpaujPMS;
$numNew = $cartpaujPMS->getNewMsgs();
// 如有未讀信息就顯示提示內容
if($numNew) echo "您有". $numNew ."條未讀信息";
}
}

然後使用下面的代碼調用

1
<?php if(function_exists('unread_messages_number')) unread_messages_number(); ?>

<?php if(function_exists(‘unread_messages_number’)) unread_messages_number(); ?>

發佈留言