最新在线看的黄网|伊人久久久久久久网站|日本a视频专区二|欧美A级无码毛片|有扫五av在线播放|好屌日aV在线播放|内射福利视频导航|极品少妇一区二区视频|无吗在线一区播放|性爱黄色视频不卡

您的位置:首頁 > wordpress

非大眾版WordPress純代碼實(shí)現(xiàn)閱讀量統(tǒng)計(jì)
wordpress 2023-11-06編輯:深圳網(wǎng)站建設(shè)閱讀( WordPress 統(tǒng)計(jì) 代碼

因疫情影響,已經(jīng)2個多月沒有更新博客了,如果現(xiàn)在還不趕快出來冒個泡,怕大家誤認(rèn)為我走丟了(因?yàn)閺膩頉]有這么長時間斷更過)。

目前我使用的Begin知更鳥主題,文章閱讀次數(shù)統(tǒng)計(jì)是依賴于PostViews插件,大家都知道WordPress的詬病就是插件越多越慢(其實(shí)在我看來并不是插件越多越慢,而是查詢、事件鉤子越多就越慢),所以自己就寫了一個純代碼版本,實(shí)現(xiàn)了閱讀統(tǒng)計(jì)和部分查詢函數(shù)。

當(dāng)然,可能你想說這些早就有人分享過了;是的,在我寫之前我肯定也會上網(wǎng)看看已存的,發(fā)現(xiàn)有幾點(diǎn)不如意,例如添加meta的鉤子是放在wp_head的、查詢閱讀數(shù)量必須要傳遞post_id等。

正文

我直接貼出代碼,每個函數(shù)的功能均在注釋中已經(jīng)標(biāo)識出:

<span class="hljs-comment">/**
 * 判斷閱讀數(shù)量是否需要增加并進(jìn)行操作
 * 轉(zhuǎn)載請注明來自:https://www.vvso.cn/xlbk/17713.html
 */</span>
<span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">the_views_add</span><span class="hljs-params">($post_ID,$count,$key)</span></span>{
    <span class="hljs-keyword">if</span> (is_single() || is_page()) {
        <span class="hljs-keyword">if</span> ($count == <span class="hljs-string">''</span>) {
            add_post_meta($post_ID, $key, <span class="hljs-string">'0'</span>);
        } <span class="hljs-keyword">else</span> {
            update_post_meta($post_ID, $key, $count + <span class="hljs-number">1</span>);
            $count++;
        }
    }
    <span class="hljs-keyword">return</span> $count;
}
<span class="hljs-comment">//獲取當(dāng)前的閱讀數(shù)量與自增</span>
<span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">the_views</span> <span class="hljs-params">($post_id=null,$echo=true)</span> </span>{
    <span class="hljs-keyword">global</span> $post;
    <span class="hljs-keyword">if</span>($post_id==<span class="hljs-keyword">null</span>){
        $post_id = $post->ID;
    }
    $key = <span class="hljs-string">'views'</span>;
    $count = get_post_meta($post_id, $key, <span class="hljs-keyword">true</span>);
    <span class="hljs-keyword">if</span> ($count == <span class="hljs-string">''</span>) {
        $count = <span class="hljs-number">0</span>;
    }
    $count = the_views_add($post_id, $count, $key);
    $count = number_format_i18n($count);
    <span class="hljs-keyword">if</span>(!$echo){
        <span class="hljs-keyword">return</span> $count;
    }
    <span class="hljs-keyword">echo</span> $count;
}
<span class="hljs-comment">//設(shè)置文章發(fā)布的時候進(jìn)行字段添加</span>
<span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">set_views</span> <span class="hljs-params">($post_ID)</span> </span>{
    $key = <span class="hljs-string">'views'</span>;
    $count = get_post_meta($post_ID, $key, <span class="hljs-keyword">true</span>);
    <span class="hljs-keyword">if</span> ($count == <span class="hljs-string">''</span>) {
        add_post_meta($post_ID, $key, <span class="hljs-string">'0'</span>);
    }
}
add_action(<span class="hljs-string">'publish_post'</span>, <span class="hljs-string">'set_views'</span>);

這里再分享一個查詢函數(shù),因?yàn)槭亲远x的所以就沒有插件的附帶函數(shù)支持,這個函數(shù)是查詢N天內(nèi)閱讀數(shù)量最多的文章:

<span class="hljs-comment">/**
 * 轉(zhuǎn)載請注明來自:https://www.vvso.cn/xlbk/17713.html
 * 獲取查看最多的文章
 * <span class="hljs-doctag">@param</span> $days N天內(nèi)
 * <span class="hljs-doctag">@param</span> $nums 數(shù)量
 * <span class="hljs-doctag">@return</span> array|object|null
 */</span>
<span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">get_views_most_post</span><span class="hljs-params">($days, $nums)</span></span>{
    <span class="hljs-keyword">global</span> $wpdb;
    $sql = <span class="hljs-string">"select posts.*, meta.meta_value as views
            from {$wpdb->posts} as posts INNER JOIN (select post_id,(meta_value+0) as meta_value from 
            {$wpdb->postmeta} where meta_key='views' order by (meta_value+0) DESC) as meta
            on meta.post_id = posts.ID
            where posts.post_type = 'post'
            AND posts.post_status = 'publish' AND TO_DAYS(now()) - TO_DAYS(posts.post_date) < {$days}
            ORDER BY meta.meta_value DESC limit 0, {$nums}"</span>;
    <span class="hljs-keyword">return</span> $wpdb->get_results($sql);
}

后記

至于我為什么會分享這些代碼出來,因?yàn)樵谶^年期間博主寫了一套WordPress主題,目前整體框架和內(nèi)容都均已完成,現(xiàn)在處于優(yōu)化和測試期,后續(xù)上線會專門發(fā)文告知,有興趣的小伙伴歡迎多多關(guān)注,感謝你的支持!

服務(wù)范圍:WordPress搭建、WordPress主題開發(fā)、WordPress二次開發(fā)、WordPress插件開發(fā)
其它服務(wù):網(wǎng)站建設(shè)、企業(yè)郵箱、數(shù)字證書ssl、400電話、
技術(shù)標(biāo)簽:企業(yè)網(wǎng)站、外貿(mào)網(wǎng)站、外貿(mào)商城、其它問題
聯(lián)系方式:電話:13714666846 微信同號

企業(yè)網(wǎng)站定制

企業(yè)網(wǎng)站定制 根據(jù)企業(yè)需求,量身定制設(shè)計(jì)

企業(yè)網(wǎng)站定制:2800元起
添加微信 請說明來意
聯(lián)系我們
站內(nèi)搜索 MORE+

24小時服務(wù)熱線 0755-29765948
  • 地址:深圳市羅湖區(qū)人民北路2033號206
  • 電話:0755-29765948 傳真:82256610
  • 手機(jī):13714666846 18948334877
  • 郵箱:gong@ew35.com 164761418@qq.com
  • 粵ICP備14049207號
創(chuàng)意化數(shù)字品牌整合網(wǎng)絡(luò)營銷
營銷網(wǎng)站讓你坐等商機(jī)坐傭客戶,Rss

版權(quán)所有:深圳市網(wǎng)商在線科技有限公司

版權(quán)所有:深圳市網(wǎng)商在線科技有限公司
友情連接link: