調用最近瀏覽過的文章,比較蛋疼的功能,原理是通過讀取瀏覽器cookie文件,調用顯示最近(360天)被訪問過的10篇文章 ,需要注意的是,該功能不是統計所有瀏覽者最近查看過的文章,并沒有寫進數據庫中,每個訪客都有自己獨有的瀏覽清單。
將下面代碼添加到主題functions.php文件的最后:
- <?php
- /* 可選參數: */
- $zg_cookie_expire?= 360;?// cookie過期時間,默認值是360天
- $zg_number_of_posts?= 10;?// 顯示篇數,默認值是10。
- $zg_recognize_pages?= true;
- /* 此行后不要編輯 */
- function?zg_lwp_header() {
- if?(is_single()) {
- zg_lw_setcookie();
- }?elseif?(is_page()) {
- global$zg_recognize_pages;
- if?($zg_recognize_pages?=== true) {
- zg_lw_setcookie();
- }
- }
- }
- function?zg_lw_setcookie() {
- global$wp_query;
- $zg_post_ID?=?$wp_query->post->ID;
- if?(! isset($_COOKIE["WP-LastViewedPosts"])) {
- $zg_cookiearray?=?array($zg_post_ID);
- }?else?{
- $zg_cookiearray?= unserialize(preg_replace('!s:(\d+):"(.*?)";!e',?"'s:'.strlen('$2').':\"$2\";'",?stripslashes($_COOKIE["WP-LastViewedPosts"])));
- if?(!?is_array($zg_cookiearray)) {
- $zg_cookiearray?=?array($zg_post_ID);
- }
- }
- if?(in_array($zg_post_ID,?$zg_cookiearray)) {
- $zg_key?=?array_search($zg_post_ID,?$zg_cookiearray);
- array_splice($zg_cookiearray,?$zg_key, 1);
- }
- array_unshift($zg_cookiearray,?$zg_post_ID);
- global$zg_number_of_posts;
- while?(count($zg_cookiearray) >?$zg_number_of_posts) {
- array_pop($zg_cookiearray);
- }
- $zg_blog_url_array?=?parse_url(get_bloginfo('url'));
- $zg_blog_url?=?$zg_blog_url_array['host'];
- $zg_blog_url?=?str_replace('www.',?'',?$zg_blog_url);
- $zg_blog_url_dot?=?'.';
- $zg_blog_url_dot?.=?$zg_blog_url;
- $zg_path_url?=?$zg_blog_url_array['path'];
- $zg_path_url_slash?= '/';
- $zg_path_url?.=?$zg_path_url_slash;
- global$zg_cookie_expire;
- setcookie("WP-LastViewedPosts", serialize($zg_cookiearray), (time()+($zg_cookie_expire*86400)),?$zg_path_url,?$zg_blog_url_dot, 0);
- }
- function?zg_recently_viewed() {
- echo?'<ul?class="viewed_posts">';
- if?(isset($_COOKIE["WP-LastViewedPosts"])) {
- $zg_post_IDs?= unserialize(preg_replace('!s:(\d+):"(.*?)";!e',?"'s:'.strlen('$2').':\"$2\";'",?stripslashes($_COOKIE["WP-LastViewedPosts"])));
- foreach?($zg_post_IDsas$value) {
- global$wpdb;
- $zg_get_title?=?$wpdb->get_results("SELECT post_title FROM $wpdb->posts WHERE ID = '$value+0' LIMIT 1");
- foreach($zg_get_titleas$zg_title_out) {
- echo"<li><a href=\"". get_permalink($value+0) .?"\" title=\"".?$zg_title_out->post_title .?"\">".?$zg_title_out->post_title .?"</a></li>\n";
- }
- }
- }?else?{
- }
- echo?'</ul>';
- }
- add_action('get_header','zg_lwp_header');
- ?>
由于代碼高亮轉換后代碼可能執行有誤,這里提供 源文件下載
調用方法,在側邊sidebar模版或者正文single模版適當位置加入下面代碼;
- <?php?if?(function_exists('zg_recently_viewed')):?if?(isset($_COOKIE["WP-LastViewedPosts"])) { ?>
- <h2>Last viewed posts</h2>
- <?php zg_recently_viewed(); ?>
- <?php }?endif; ?>?
注:調用并不十分準確,有一定誤差,效果看本站正文最后。
最后說明一下,代碼提取自:Last Viewed Posts 插件,如果嫌折騰麻煩,可以直接安裝并啟用該插件,使用更為方便,可以直接將該功能拖到側邊小工具中。
評論