调用WordPress函数统计文章访问量及PHP原生计数器的实现
<p>1.首先介绍WordPress的两款功能强大的插件:</p>
<p>
(1)Count per Day 是一个非常强大的访客数量统计插件,可以统计每天、昨天、每周、每月等等的访客数量(根据IP进行统计),统计在线访客数、浏览器、搜索词等等,自带多种调用简码、模板标签以及小工具,方便你自行调用和集成。<br>
(2)StatPressCN,实时显示blog的访问统计,完美支持中文(如搜索关键字等)。它可以集中显示来访者、爬虫、搜索关键字、订阅统计、浏览器、操 作系统等信息,方便您及时把握blog的访问情况,同时还提供了定制输出、统计权限、信息存储期等个性化设置选项。另外,您可以随时掌握blog被订阅的 情况并把它放在侧栏中显示,还可以获得所有页面(包括post、page、archive以及homepage)被访问的情况,还可以在侧栏中显示 blog中被访问最多的热门文章等。 增加了对中国大陆和港台地区的本地化语言支持(目前支持wp-config.php中设置为zh_CN、zh_HK和zh_TW)。<br>
安装插件的方式固然功能很强大,但是弊端也是显而易见的——容易影响网页加载速度,所以我放弃了这种方式。</p>
<p>
2.其次,是简单的几条代码,通过统计网页刷新的次数来记录访客数的,把以下代码放到function.php中:</p>
<div>
<div>
<div id="highlighter_920944">
<div>
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td>
<div>
1</div>
<div>
2</div>
<div>
3</div>
<div>
4</div>
<div>
5</div>
<div>
6</div>
<div>
7</div>
<div>
8</div>
<div>
9</div>
<div>
10</div>
<div>
11</div>
<div>
12</div>
<div>
13</div>
<div>
14</div>
<div>
15</div>
<div>
16</div>
<div>
17</div>
<div>
18</div>
<div>
19</div>
<div>
20</div>
<div>
21</div>
<div>
22</div>
<div>
23</div>
<div>
24</div>
<div>
25</div>
<div>
26</div>
<div>
27</div>
<div>
28</div>
<div>
29</div>
</td>
<td>
<div>
<div>
<code>/* 访问计数 */</code>
</div>
<div>
<code>function</code> <code>record_visitors()</code>
</div>
<div>
<code>{</code>
</div>
<div>
<code> </code><code>if</code> <code>(is_singular())</code>
</div>
<div>
<code> </code><code>{</code>
</div>
<div>
<code> </code><code>global</code> <code>$post</code><code>;</code>
</div>
<div>
<code> </code><code>$post_ID</code> <code>= </code><code>$post</code><code>->ID;</code>
</div>
<div>
<code> </code><code>if</code><code>(</code><code>$post_ID</code><code>)</code>
</div>
<div>
<code> </code><code>{</code>
</div>
<div>
<code> </code><code>$post_views</code> <code>= (int)get_post_meta(</code><code>$post_ID</code><code>, </code><code>'views'</code><code>, true);</code>
</div>
<div>
<code> </code><code>if</code><code>(!update_post_meta(</code><code>$post_ID</code><code>, </code><code>'views'</code><code>, (</code><code>$post_views</code><code>+1)))</code>
</div>
<div>
<code> </code><code>{</code>
</div>
<div>
<code> </code><code>add_post_meta(</code><code>$post_ID</code><code>, </code><code>'views'</code><code>, 1, true);</code>
</div>
<div>
<code> </code><code>}</code>
</div>
<div>
<code> </code><code>}</code>
</div>
<div>
<code> </code><code>}</code>
</div>
<div>
<code>}</code>
</div>
<div>
<code>add_action(</code><code>'wp_head'</code><code>, </code><code>'record_visitors'</code><code>);</code>
</div>
<div>
<code> </code>
</div>
<div>
<code>/// 函数名称:post_views</code>
</div>
<div>
<code>/// 函数作用:取得文章的阅读次数</code>
</div>
<div>
<code>function</code> <code>post_views(</code><code>$before</code> <code>= </code><code>'(点击 '</code><code>, </code><code>$after</code> <code>= </code><code>' 次)'</code><code>, </code><code>$echo</code> <code>= 1)</code>
</div>
<div>
<code>{</code>
</div>
<div>
<code> </code><code>global</code> <code>$post</code><code>;</code>
</div>
<div>
<code> </code><code>$post_ID</code> <code>= </code><code>$post</code><code>->ID;</code>
</div>
<div>
<code> </code><code>$views</code> <code>= (int)get_post_meta(</code><code>$post_ID</code><code>, </code><code>'views'</code><code>, true);</code>
</div>
<div>
<code> </code><code>if</code> <code>(</code><code>$echo</code><code>) </code><code>echo</code> <code>$before</code><code>, number_format(</code><code>$views</code><code>), </code><code>$after</code><code>;</code>
</div>
<div>
<code> </code><code>else</code> <code>return</code> <code>$views</code><code>;</code>
</div>
<div>
<code>}</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div id="codetool">
<div>
<textarea></textarea>
</div>
</div>
</div>
<p>
然后在需要显示的界面,比如footer.php或header.php等页面调用:</p>
<div>
<div>
<div id="highlighter_263421">
<div>
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td>
<div>
1</div>
</td>
<td>
<div>
<div>
<code><?php post_views(</code><code>' '</code><code>, </code><code>' 次'</code><code>); ?></code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div id="codetool">
<div>
<textarea></textarea>
</div>
</div>
</div>
<p>
3.PHP原生实现访问计数器示例:<br>
index.php</p>
<div>
<div>
<div id="highlighter_382811">
<div>
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td>
<div>
1</div>
<div>
2</div>
<div>
3</div>
<div>
4</div>
<div>
5</div>
<div>
6</div>
<div>
7</div>
<div>
8</div>
<div>
9</div>
<div>
10</div>
<div>
11</div>
<div>
12</div>
<div>
13</div>
<div>
14</div>
<div>
15</div>
<div>
16</div>
<div>
17</div>
<div>
18</div>
<div>
19</div>
<div>
20</div>
<div>
21</div>
<div>
22</div>
<div>
23</div>
<div>
24</div>
</td>
<td>
<div>
<div>
<code><?php</code>
</div>
<div>
<code> </code><code>include</code><code>(</code><code>"counter.php"</code><code>)</code>
</div>
<div>
<code>?></code>
</div>
<div>
</div>
<div>
<code><html></code>
</div>
<div>
<code> </code><code><head></code>
</div>
<div>
<code> </code><code><title>访问计数器</title></code>
</div>
<div>
<code> </code><code></head></code>
</div>
<div>
</div>
<div>
<code> </code><code><body></code>
</div>
<div>
<code> </code><code><center></code>
</div>
<div>
<code> </code><code><h1>访问者计数器</h1></code>
</div>
<div>
<code> </code><code><U> <!--下划线--></code>
</div>
<div>
<code> </code><code><font size=</code><code>"6"</code> <code>face=</code><code>"隶书"</code> <code>>你是第</font></code>
</div>
<div>
<code> </code><code><B></code>
</div>
<div>
<code> </code><code><font size=</code><code>"9"</code> <code>face=</code><code>"Verdana"</code> <code>color=</code><code>"#ffcc00"</code><code>></code>
</div>
<div>
<code> </code><code><?php Counter() ?> <!--调用函数--></code>
</div>
<div>
<code> </code><code></font></code>
</div>
<div>
<code> </code><code></B></code>
</div>
<div>
<code> </code><code><font size=</code><code>"6"</code> <code>face=</code><code>"隶书"</code> <code>>个访问者</font></code>
</div>
<div>
<code> </code><code></U></code>
</div>
<div>
<code> </code><code></center></code>
</div>
<div>
<code> </code><code></body></code>
</div>
<div>
<code></html></code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div id="codetool">
<div>
<textarea></textarea>
</div>
</div>
</div>
<p>
counter.php</p>
<div>
<div>
<div id="highlighter_467624">
<div>
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td>
<div>
1</div>
<div>
2</div>
<div>
3</div>
<div>
4</div>
<div>
5</div>
<div>
6</div>
<div>
7</div>
<div>
8</div>
<div>
9</div>
<div>
10</div>
<div>
11</div>
<div>
12</div>
<div>
13</div>
<div>
14</div>
<div>
15</div>
<div>
16</div>
<div>
17</div>
<div>
18</div>
<div>
19</div>
<div>
20</div>
<div>
21</div>
<div>
22</div>
<div>
23</div>
<div>
24</div>
<div>
25</div>
<div>
26</div>
<div>
27</div>
<div>
28</div>
<div>
29</div>
<div>
30</div>
<div>
31</div>
<div>
32</div>
<div>
33</div>
<div>
34</div>
<div>
35</div>
<div>
36</div>
<div>
37</div>
<div>
38</div>
<div>
39</div>
</td>
<td>
<div>
<div>
<code><?php</code>
</div>
<div>
<code> </code><code>//$five,$four 等变量表示零的个数,放在数字前边构成6位</code>
</div>
<div>
<code> </code><code>function</code> <code>Counter()</code>
</div>
<div>
<code> </code><code>{ </code><code>//定义函数</code>
</div>
<div>
<code> </code><code>$five</code> <code>= </code><code>"00000"</code><code>; </code><code>//声明变量</code>
</div>
<div>
<code> </code><code>$four</code> <code>= </code><code>"0000"</code><code>;</code>
</div>
<div>
<code> </code><code>$three</code> <code>= </code><code>"000"</code><code>;</code>
</div>
<div>
<code> </code><code>$two</code> <code>= </code><code>"00"</code><code>;</code>
</div>
<div>
<code> </code><code>$one</code> <code>= </code><code>"0"</code><code>;</code>
</div>
<div>
<code> </code><code>$counter</code> <code>= </code><code>"record.dat"</code><code>; </code><code>//存放访问数的目的文件,.dat格式</code>
</div>
<div>
<code> </code><code>if</code><code>(!</code><code>file_exists</code><code>(</code><code>$counter</code><code>)) </code><code>//判断文件是否存在</code>
</div>
<div>
<code> </code><code>{</code>
</div>
<div>
<code> </code><code>$counter</code> <code>= </code><code>fopen</code><code>(</code><code>$counter</code><code>,</code><code>"w"</code><code>);</code>
</div>
<div>
<code> </code><code>fputs</code><code>(</code><code>$counter</code><code>,</code><code>"0"</code><code>); </code><code>//写入文件</code>
</div>
<div>
<code> </code><code>fclose(</code><code>$counter</code><code>);</code>
</div>
<div>
<code> </code><code>}</code>
</div>
<div>
<code> </code><code>else</code>
</div>
<div>
<code> </code><code>{</code>
</div>
<div>
<code> </code><code>$fp</code> <code>= </code><code>fopen</code><code>(</code><code>$counter</code><code>,</code><code>"r+"</code><code>);</code>
</div>
<div>
<code> </code><code>$num</code> <code>= </code><code>fgets</code><code>(</code><code>$fp</code><code>,</code><code>"1024"</code><code>); </code><code>//如果文件存在则读出文件,并加 1</code>
</div>
<div>
<code> </code><code>$num</code> <code>= </code><code>$num</code> <code>+ 1;</code>
</div>
<div>
<code> </code><code>if</code><code>(</code><code>$num</code> <code>< 10)</code>
</div>
<div>
<code> </code><code>print</code> <code>"$five"</code><code>.</code><code>"$num"</code><code>;</code>
</div>
<div>
<code> </code><code>elseif</code><code>(</code><code>$num</code> <code>< 100)</code>
</div>
<div>
<code> </code><code>print</code> <code>"$four"</code><code>.</code><code>"$num"</code><code>;</code>
</div>
<div>
<code> </code><code>elseif</code><code>(</code><code>$num</code> <code>< 1000)</code>
</div>
<div>
<code> </code><code>print</code> <code>"$three"</code><code>.</code><code>"$num"</code><code>;</code>
</div>
<div>
<code> </code><code>elseif</code><code>(</code><code>$num</code> <code>< 10000)</code>
</div>
<div>
<code> </code><code>print</code> <code>"$two"</code><code>.</code><code>"$num"</code><code>;</code>
</div>
<div>
<code> </code><code>elseif</code><code>(</code><code>$num</code> <code>< 100000)</code>
</div>
<div>
<code> </code><code>print</code> <code>"$one"</code><code>.</code><code>"$num"</code><code>;</code>
</div>
<div>
<code> </code><code>else</code>
</div>
<div>
<code> </code><code>print</code> <code>"$num"</code><code>;</code>
</div>
<div>
<code> </code><code>}</code>
</div>
<div>
<code> </code><code>$fp</code> <code>= </code><code>fopen</code><code>(</code><code>$counter</code><code>,</code><code>"w"</code><code>);</code>
</div>
<div>
<code> </code><code>fputs</code><code>(</code><code>$fp</code><code>,</code><code>"$num"</code><code>);</code>
</div>
<div>
<code> </code><code>fclose(</code><code>$fp</code><code>);</code>
</div>
<div>
<code> </code><code>}</code>
</div>
<div>
<code>?></code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div id="codetool">
<div>
<textarea></textarea>
</div>
</div>
</div>
<p>
<img title="调用WordPress函数统计文章访问量及PHP原生计数器的实现" alt="调用WordPress函数统计文章访问量及PHP原生计数器的实现" src="https://zhuji.jb51.net/uploads/img/202305/1a334adedee365465644a49e033591c2.jpg" style="max-width:100%!important;height:auto!important;width: 622px; height: 179px;"></p>
頁:
[1]