WordPress文章收藏外掛程式:WP Favorite Posts

本文目錄1WP Favorite Posts 簡介2WP Favorite Posts 安裝設置3WP Favorite Posts 使用方法4WP Favorite Posts 高級技巧(備用)4.11.調用文章的收藏次數4.22.收藏列表 的另一種調用方法4.33.獲取某個用戶的收藏數量4.44.刪除文章後統計不準確

最近一直在考慮 WordPress大學 的設計問題,尤其是如何做好註冊用戶體驗。考慮添加一個文章收藏的功能,讓大傢收藏自己喜歡的文章,然後在一個頁面生成列表,並且在側邊欄顯示最近收藏的文章,這樣一來,大傢以後就可以很方便找到自己需要的文章。於是找到瞭 WP Favorite Posts 這個WordPress文章收藏外掛,試瞭一下,感覺不錯。

WP Favorite Posts 簡介

WP Favorite Posts 是一個不錯的WordPress文章收藏外掛,可以在文章頁面中添加收藏按鈕,用戶可以點擊收藏自己的文章,並且可以在專門的頁面中顯示自己收藏的文章,還支援“最近收藏的文章(每個人看到自己的)”“全站收藏次數最多的文章”這兩個小工具。

最值得一提的 WP Favorite Posts 通過瀏覽器cookie和數據庫兩種方式存儲用戶收藏數據,也就是說,遊客也可以收藏文章,當然瞭,遊客的收藏數據是通過cookie保存的,如果刪除瞭瀏覽器的cookie,就丟掉瞭收藏數據瞭,所以建議註冊用戶後收藏,就可以保存在數據庫中,不會丟失瞭。

WP Favorite Posts 安裝設置

1.在後臺外掛安裝頁面 搜索 WP Favorite Posts  線上安裝,或者 下載WP Favorite Posts 。

2.啟用以後,在 設置 – Favorite Posts ,可以進行相關設置(看不懂英文的,就使用翻譯工具翻譯吧)

wpdaxue.com-201301319

可以設置各種提示語

wpdaxue.com-201301320

設置好以後,就可以使用該外掛瞭。

WP Favorite Posts 使用方法

1.“收藏鏈接“的顯示方式

你可以在第一個圖中的界面,選擇自動插入文章頭部或尾部,或者通過在 single.php 或 page.php 的主題文件中使用下面的代碼自定義位置:

1
<?php if (function_exists('wpfp_link')) { wpfp_link(); } ?>

<?php if (function_exists(‘wpfp_link’)) { wpfp_link(); } ?>

如果你隻希望在某些文章中才顯示收藏鏈接,那你可以在編輯文章的時候,添加下面的簡碼到文章中即可:

1
[wpfp-link]

[wpfp-link]

2.小工具調用。你可以在 外觀 – 小工具 看到可用的兩個小工具,自己設置一下即可。

3.添加收藏列表頁面。這個頁面就是用來顯示用戶所有搜藏的文章的頁面,你可以在 頁面 – 新建頁面,然後在內容中添加下面的調用代碼,就可以顯示用戶的收藏列表(每個用戶隻能看到自己的收藏列表)

1
[wp-favorite-posts]

[wp-favorite-posts]

wpdaxue.com-201301321

WP Favorite Posts 高級技巧(備用)

下面的是一些高級功能,在論壇看到的,還未測試,記錄一下,方便以後使用。

1.調用文章的收藏次數

最簡單的方法在循環中使用下面的代碼即可直接調用:

1
<?php echo wpfp_get_post_meta(get_the_ID()); ?>

<?php echo wpfp_get_post_meta(get_the_ID()); ?>

如果上面的方法不生效,可以考慮下面的方法:

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

1
2
3
4
5
6
7
8
9
10
11
12
13
function wpfp_get_current_count() {
    global $wpdb;
	$current_post = get_the_ID();
    $query = "SELECT post_id, meta_value, post_status FROM $wpdb->postmeta";
    $query .= " LEFT JOIN $wpdb->posts ON post_id=$wpdb->posts.ID";
    $query .= " WHERE post_status='publish' AND meta_key='wpfp_favorites' AND post_id = '".$current_post."'";
    $results = $wpdb->get_results($query);
    if ($results) {
        foreach ($results as $o):
            echo $o->meta_value;
        endforeach;
    }else {echo( '0' );}
}

function wpfp_get_current_count() {
global $wpdb;
$current_post = get_the_ID();
$query = "SELECT post_id, meta_value, post_status FROM $wpdb->postmeta";
$query .= " LEFT JOIN $wpdb->posts ON post_id=$wpdb->posts.ID";
$query .= " WHERE post_status=’publish’ AND meta_key=’wpfp_favorites’ AND post_id = ‘".$current_post."’";
$results = $wpdb->get_results($query);
if ($results) {
foreach ($results as $o):
echo $o->meta_value;
endforeach;
}else {echo( ‘0’ );}
}

使用下面的代碼調用

1
<?php wpfp_get_current_count(); ?>

<?php wpfp_get_current_count(); ?>

2.收藏列表 的另一種調用方法

如果想通過直接在主題文件中修改顯示收藏列表,可以使用下面的調用函數

1
<?php wpfp_list_favorite_posts(); ?>

<?php wpfp_list_favorite_posts(); ?>

3.獲取某個用戶的收藏數量

該外掛默認使用自帶的 wpfp-page-template.php 文件來顯示收藏列表,如果你要在列表上方顯示收藏數量,可以參考下面的代碼:

1
2
3
4
5
6
    if ($favorite_post_ids){
        $user_favorite_count = count($favorite_post_ids);
        echo '<p>您已收藏瞭 '.$user_favorite_count.' 篇文章</p>';
    }else{
        echo '您目前還沒有收藏任何文章!';
    }

if ($favorite_post_ids){
$user_favorite_count = count($favorite_post_ids);
echo ‘<p>您已收藏瞭 ‘.$user_favorite_count.’ 篇文章</p>’;
}else{
echo ‘您目前還沒有收藏任何文章!’;
}

4.刪除文章後統計不準確

網站刪除瞭一些文章,如果用戶之前收藏過這些文章,他們的收藏數據中仍舊包含這些文章的ID,導致他們的收藏數量統計不準確。

找到外掛的 wpfp-page-template.php 文件,按照下圖所示添加代碼:

1
2
3
4
5
6
7
8
9
10
        /*remove deleted posts cmhello*/
        foreach ($favorite_post_ids as $id) {
            if ( FALSE === get_post_status( $id ) ) {
                $favorite_post_ids = array_diff($favorite_post_ids, array($id));
                $favorite_post_ids = array_values($favorite_post_ids);
                wpfp_update_user_meta($favorite_post_ids);
            }
        }
        $favorite_post_ids = wpfp_get_user_meta();
        /*//remove deleted posts cmhello*/

/*remove deleted posts cmhello*/
foreach ($favorite_post_ids as $id) {
if ( FALSE === get_post_status( $id ) ) {
$favorite_post_ids = array_diff($favorite_post_ids, array($id));
$favorite_post_ids = array_values($favorite_post_ids);
wpfp_update_user_meta($favorite_post_ids);
}
}
$favorite_post_ids = wpfp_get_user_meta();
/*//remove deleted posts cmhello*/

2016-09-09_103017

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *