一、想法
一開始想到應該有什麼插件能實現(xiàn),搜尋了下,排第一的是文章瀏覽量計數(shù)器(Post Views Counter)
。
在安裝插件之前,想了下,能否自己實現(xiàn)?畢竟動手折騰下,是會有收穫的。
在搜尋之前,我想到的是在wp_post
表加個字段,然後在文章打開的時候,把資料存起來,這樣就能持久保存文章閱讀數(shù)了。
但wordpress使用php寫的,mysql加字段,對前端的我來說,還是比較耗時間的。例如用php怎麼操作資料庫,怎麼用php加欄位?估計最少半天甚至一天的時間,才能完成。
有沒有更簡單的辦法?
因為之前折騰過wordpress資料庫,知道大概有哪些表。所以突然想到有個wp_postmeta
表。從字面看,應該是可以加個欄位或能從該表入手的。
meta_id是id,post_id是文章id,meta_key和meta_value是文章的鍵值對資訊。
二、wordpress提供的方法
那怎麼操作該張表?
wordpress提供了幾個方法:
add_post_meta($post_id,?$meta_key,?$meta_value,?$unique); get_post_meta($post_id,?$meta_key,?$single); update_post_meta($post_id,?$meta_key,?$meta_value,?$prev_value); delete_post_meta($post_id,?$meta_key,?$meta_value);
三、具體程式碼實作
那怎麼用呢?
首先在function.php
檔案中新增add和get的函數(shù)封裝,然後在template-parts/content-single.php
檔案中呼叫。
//?function.php function?addPostViews($postId)?{ ????$key?=?'post_views'; ????$value?=?get_post_meta($postId,?$key,?true); ????if($value?==?''){ ????????$value?=?0; ????????delete_post_meta($postId,?$key); ????????add_post_meta($postId,?$key,?$value); ????}else{ ????????$value++; ????????update_post_meta($postId,?$key,?$value); ????} } function?getPostViews($postId){??? ????$key?=?'post_views';??? ????$value?=?get_post_meta($postId,?$key,?true);??? ????if($value?==?''){ ????$value?=?0; ????????delete_post_meta($postId,?$key); ????????add_post_meta($postId,?$key,?$value); ????????return?$value; ????} ????return?$value; } //?template-parts/content-single.php <p>閱讀:<?php echo getPostViews(get_the_ID()); ?></p> <?php addPostViews(get_the_ID()); ?>