给WordPress中的留言加上楼层号的PHP代码实例
<p>最近突然发现博客的评论楼层有点问题,之前一直设置的是“在每个页面顶部显示新的评论”,也就是所谓的倒序显示评论,但是主题只支持顺序的评论楼层好,于是楼层和楼层号之间对不上。搜了一下在zww.me发现有实现的代码,但是放到博客之后无法正常工作,比如限制分页显示为25条的时候,文章只有一条评论时也显示的25楼。折腾了一下搞定了,做个记录,也供大家参考。</p>
<p>
在主题文件 functions.php中找到$GLOBALS['comment'] = $comment;在后面加上下面的代码:</p>
<div>
<div>
<div id="highlighter_277274">
<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>
<div>
40</div>
<div>
41</div>
<div>
42</div>
<div>
43</div>
</td>
<td>
<div>
<div>
<code>/* 主评论计数器 */</code>
</div>
<div>
<code> </code><code>global</code> <code>$commentcount</code><code>,</code><code>$wpdb</code><code>, </code><code>$post</code><code>;</code>
</div>
<div>
<code> </code><code>if</code><code>(!</code><code>$commentcount</code><code>) { </code><code>//初始化楼层计数器</code>
</div>
<div>
<code> </code><code>if</code> <code>( get_option(</code><code>'comment_order'</code><code>) === </code><code>'desc'</code> <code>) { </code><code>//倒序</code>
</div>
<div>
<code> </code><code>$comments</code> <code>= </code><code>$wpdb</code><code>->get_results(</code><code>"SELECT * FROM $wpdb->comments WHERE comment_post_ID = $post->ID AND comment_type = '' AND comment_approved = '1' AND !comment_parent"</code><code>);</code>
</div>
<div>
<code> </code><code>$cnt</code> <code>= </code><code>count</code><code>(</code><code>$comments</code><code>);</code><code>//获取主评论总数量</code>
</div>
<div>
<code> </code><code>$page</code> <code>= get_query_var(</code><code>'cpage'</code><code>);</code><code>//获取当前评论列表页码</code>
</div>
<div>
<code> </code><code>$cpp</code><code>=get_option(</code><code>'comments_per_page'</code><code>);</code><code>//获取每页评论显示数量</code>
</div>
<div>
<code> </code><code>if</code> <code>(</code><code>ceil</code><code>(</code><code>$cnt</code> <code>/ </code><code>$cpp</code><code>) == 1 || (</code><code>$page</code> <code>> 1 && </code><code>$page</code> <code>== </code><code>ceil</code><code>(</code><code>$cnt</code> <code>/ </code><code>$cpp</code><code>))) {</code>
</div>
<div>
<code> </code><code>$commentcount</code> <code>= </code><code>$cnt</code> <code>+ 1;</code><code>//如果评论只有1页或者是最后一页,初始值为主评论总数</code>
</div>
<div>
<code> </code><code>} </code><code>else</code> <code>{</code>
</div>
<div>
<code> </code><code>$commentcount</code> <code>= </code><code>$cpp</code> <code>* </code><code>$page</code> <code>+ 1;</code>
</div>
<div>
<code> </code><code>}</code>
</div>
<div>
<code> </code><code>}</code><code>else</code><code>{ </code><code>//顺序</code>
</div>
<div>
<code> </code><code>$page</code> <code>= get_query_var(</code><code>'cpage'</code><code>)-1;</code>
</div>
<div>
<code> </code><code>$cpp</code><code>=get_option(</code><code>'comments_per_page'</code><code>);</code><code>//获取每页评论数</code>
</div>
<div>
<code> </code><code>$commentcount</code> <code>= </code><code>$cpp</code> <code>* </code><code>$page</code><code>;</code>
</div>
<div>
<code> </code><code>}</code>
</div>
<div>
<code> </code><code>}</code>
</div>
<div>
<code>/* 主评论计数器 end */</code>
</div>
<div>
<code> </code><code>if</code> <code>( !</code><code>$parent_id</code> <code>= </code><code>$comment</code><code>->comment_parent ) {</code>
</div>
<div>
<code> </code><code>$commentcountText</code> <code>= </code><code>'<div>'</code><code>;</code>
</div>
<div>
<code> </code><code>if</code> <code>( get_option(</code><code>'comment_order'</code><code>) === </code><code>'desc'</code> <code>) { </code><code>//倒序</code>
</div>
<div>
<code> </code><code>$commentcountText</code> <code>.= --</code><code>$commentcount</code> <code>. </code><code>'楼'</code><code>;</code>
</div>
<div>
<code> </code><code>} </code><code>else</code> <code>{</code>
</div>
<div>
<code> </code><code>switch</code> <code>(</code><code>$commentcount</code><code>) {</code>
</div>
<div>
<code> </code><code>case</code> <code>0:</code>
</div>
<div>
<code> </code><code>$commentcountText</code> <code>.= </code><code>'<span>沙发!</span>'</code><code>; ++</code><code>$commentcount</code><code>;</code>
</div>
<div>
<code> </code><code>break</code><code>;</code>
</div>
<div>
<code> </code><code>case</code> <code>1:</code>
</div>
<div>
<code> </code><code>$commentcountText</code> <code>.= </code><code>'<span>板凳!</span>'</code><code>; ++</code><code>$commentcount</code><code>;</code>
</div>
<div>
<code> </code><code>break</code><code>;</code>
</div>
<div>
<code> </code><code>case</code> <code>2:</code>
</div>
<div>
<code> </code><code>$commentcountText</code> <code>.= </code><code>'<span>地板!</span>'</code><code>; ++</code><code>$commentcount</code><code>;</code>
</div>
<div>
<code> </code><code>break</code><code>;</code>
</div>
<div>
<code> </code><code>default</code><code>:</code>
</div>
<div>
<code> </code><code>$commentcountText</code> <code>.= ++</code><code>$commentcount</code> <code>. </code><code>'楼'</code><code>;</code>
</div>
<div>
<code> </code><code>break</code><code>;</code>
</div>
<div>
<code> </code><code>}</code>
</div>
<div>
<code> </code><code>}</code>
</div>
<div>
<code> </code><code>$commentcountText</code> <code>.= </code><code>'</div">'</code><code>;</code>
</div>
<div>
<code> </code><code>}</code>
</div>
<div>
<code> </code><code>}</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div id="codetool">
<div>
<textarea></textarea>
</div>
</div>
</div>
<p>
然后在合适的位置加上以下代码输出楼层号</p>
<div>
<div>
<div id="highlighter_806882">
<div>
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td>
<div>
1</div>
</td>
<td>
<div>
<div>
<code><?php </code><code>echo</code> <code>$commentcountText</code><code>; </code><code>//主评论楼层号 - by zwwooooo ?></code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div id="codetool">
<div>
<textarea></textarea>
</div>
</div>
</div>
<p>
修改之后的代码应该是这样的(以官方最新的 wp_list_comments() 回调函数代码为例):</p>
<div>
<div>
<div id="highlighter_136288">
<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>
<div>
40</div>
<div>
41</div>
<div>
42</div>
<div>
43</div>
<div>
44</div>
<div>
45</div>
<div>
46</div>
<div>
47</div>
<div>
48</div>
<div>
49</div>
<div>
50</div>
<div>
51</div>
<div>
52</div>
<div>
53</div>
<div>
54</div>
<div>
55</div>
<div>
56</div>
<div>
57</div>
<div>
58</div>
<div>
59</div>
<div>
60</div>
<div>
61</div>
<div>
62</div>
<div>
63</div>
<div>
64</div>
<div>
65</div>
<div>
66</div>
<div>
67</div>
<div>
68</div>
<div>
69</div>
<div>
70</div>
<div>
71</div>
<div>
72</div>
<div>
73</div>
<div>
74</div>
<div>
75</div>
<div>
76</div>
<div>
77</div>
<div>
78</div>
<div>
79</div>
<div>
80</div>
<div>
81</div>
<div>
82</div>
<div>
83</div>
<div>
84</div>
<div>
85</div>
<div>
86</div>
<div>
87</div>
<div>
88</div>
<div>
89</div>
<div>
90</div>
</td>
<td>
<div>
<div>
<code><?php</code>
</div>
<div>
<code>function</code> <code>mytheme_comment(</code><code>$comment</code><code>, </code><code>$args</code><code>, </code><code>$depth</code><code>) {</code>
</div>
<div>
<code> </code><code>$GLOBALS</code><code>[</code><code>'comment'</code><code>] = </code><code>$comment</code><code>;</code>
</div>
<div>
<code> </code><code>/* 主评论计数器 by zwwooooo Modified Gimhoy(http://blog.gimhoy.com) */</code>
</div>
<div>
<code> </code><code>global</code> <code>$commentcount</code><code>,</code><code>$wpdb</code><code>, </code><code>$post</code><code>;</code>
</div>
<div>
<code> </code><code>if</code><code>(!</code><code>$commentcount</code><code>) { </code><code>//初始化楼层计数器</code>
</div>
<div>
<code> </code><code>if</code> <code>( get_option(</code><code>'comment_order'</code><code>) === </code><code>'desc'</code> <code>) { </code><code>//倒序</code>
</div>
<div>
<code> </code><code>$comments</code> <code>= </code><code>$wpdb</code><code>->get_results(</code><code>"SELECT * FROM $wpdb->comments WHERE comment_post_ID = $post->ID AND comment_type = '' AND comment_approved = '1' AND !comment_parent"</code><code>);</code>
</div>
<div>
<code> </code><code>$cnt</code> <code>= </code><code>count</code><code>(</code><code>$comments</code><code>);</code><code>//获取主评论总数量</code>
</div>
<div>
<code> </code><code>$page</code> <code>= get_query_var(</code><code>'cpage'</code><code>);</code><code>//获取当前评论列表页码</code>
</div>
<div>
<code> </code><code>$cpp</code><code>=get_option(</code><code>'comments_per_page'</code><code>);</code><code>//获取每页评论显示数量</code>
</div>
<div>
<code> </code><code>if</code> <code>(</code><code>ceil</code><code>(</code><code>$cnt</code> <code>/ </code><code>$cpp</code><code>) == 1 || (</code><code>$page</code> <code>> 1 && </code><code>$page</code> <code>== </code><code>ceil</code><code>(</code><code>$cnt</code> <code>/ </code><code>$cpp</code><code>))) {</code>
</div>
<div>
<code> </code><code>$commentcount</code> <code>= </code><code>$cnt</code> <code>+ 1;</code><code>//如果评论只有1页或者是最后一页,初始值为主评论总数</code>
</div>
<div>
<code> </code><code>} </code><code>else</code> <code>{</code>
</div>
<div>
<code> </code><code>$commentcount</code> <code>= </code><code>$cpp</code> <code>* </code><code>$page</code> <code>+ 1;</code>
</div>
<div>
<code> </code><code>}</code>
</div>
<div>
<code> </code><code>}</code><code>else</code><code>{ </code><code>//顺序</code>
</div>
<div>
<code> </code><code>$page</code> <code>= get_query_var(</code><code>'cpage'</code><code>)-1;</code>
</div>
<div>
<code> </code><code>$cpp</code><code>=get_option(</code><code>'comments_per_page'</code><code>);</code><code>//获取每页评论数</code>
</div>
<div>
<code> </code><code>$commentcount</code> <code>= </code><code>$cpp</code> <code>* </code><code>$page</code><code>;</code>
</div>
<div>
<code> </code><code>}</code>
</div>
<div>
<code> </code><code>}</code>
</div>
<div>
<code> </code><code>/* 主评论计数器 end */</code>
</div>
<div>
<code> </code><code>if</code> <code>( !</code><code>$parent_id</code> <code>= </code><code>$comment</code><code>->comment_parent ) {</code>
</div>
<div>
<code> </code><code>$commentcountText</code> <code>= </code><code>'<div>'</code><code>;</code>
</div>
<div>
<code> </code><code>if</code> <code>( get_option(</code><code>'comment_order'</code><code>) === </code><code>'desc'</code> <code>) { </code><code>//倒序</code>
</div>
<div>
<code> </code><code>$commentcountText</code> <code>.= --</code><code>$commentcount</code> <code>. </code><code>'楼'</code><code>;</code>
</div>
<div>
<code> </code><code>} </code><code>else</code> <code>{</code>
</div>
<div>
<code> </code><code>switch</code> <code>(</code><code>$commentcount</code><code>) {</code>
</div>
<div>
<code> </code><code>case</code> <code>0:</code>
</div>
<div>
<code> </code><code>$commentcountText</code> <code>.= </code><code>'<span>沙发!</span>'</code><code>; ++</code><code>$commentcount</code><code>;</code>
</div>
<div>
<code> </code><code>break</code><code>;</code>
</div>
<div>
<code> </code><code>case</code> <code>1:</code>
</div>
<div>
<code> </code><code>$commentcountText</code> <code>.= </code><code>'<span>板凳!</span>'</code><code>; ++</code><code>$commentcount</code><code>;</code>
</div>
<div>
<code> </code><code>break</code><code>;</code>
</div>
<div>
<code> </code><code>case</code> <code>2:</code>
</div>
<div>
<code> </code><code>$commentcountText</code> <code>.= </code><code>'<span>地板!</span>'</code><code>; ++</code><code>$commentcount</code><code>;</code>
</div>
<div>
<code> </code><code>break</code><code>;</code>
</div>
<div>
<code> </code><code>default</code><code>:</code>
</div>
<div>
<code> </code><code>$commentcountText</code> <code>.= ++</code><code>$commentcount</code> <code>. </code><code>'楼'</code><code>;</code>
</div>
<div>
<code> </code><code>break</code><code>;</code>
</div>
<div>
<code> </code><code>}</code>
</div>
<div>
<code> </code><code>}</code>
</div>
<div>
<code> </code><code>$commentcountText</code> <code>.= </code><code>'</div">'</code><code>;</code>
</div>
<div>
<code> </code><code>}</code>
</div>
<div>
<code> </code><code>}</code>
</div>
<div>
</div>
<div>
<code> </code><code>extract(</code><code>$args</code><code>, EXTR_SKIP);</code>
</div>
<div>
</div>
<div>
<code> </code><code>if</code> <code>( </code><code>'div'</code> <code>== </code><code>$args</code><code>[</code><code>'style'</code><code>] ) {</code>
</div>
<div>
<code> </code><code>$tag</code> <code>= </code><code>'div'</code><code>;</code>
</div>
<div>
<code> </code><code>$add_below</code> <code>= </code><code>'comment'</code><code>;</code>
</div>
<div>
<code> </code><code>} </code><code>else</code> <code>{</code>
</div>
<div>
<code> </code><code>$tag</code> <code>= </code><code>'li'</code><code>;</code>
</div>
<div>
<code> </code><code>$add_below</code> <code>= </code><code>'div-comment'</code><code>;</code>
</div>
<div>
<code> </code><code>}</code>
</div>
<div>
<code>?></code>
</div>
<div>
<code> </code><code><<?php </code><code>echo</code> <code>$tag</code> <code>?> <?php comment_class(</code><code>empty</code><code>( </code><code>$args</code><code>[</code><code>'has_children'</code><code>] ) ? </code><code>''</code> <code>: </code><code>'parent'</code><code>) ?> id=</code><code>"comment-<?php comment_ID() ?>"</code><code>></code>
</div>
<div>
<code> </code><code><?php </code><code>if</code> <code>( </code><code>'div'</code> <code>!= </code><code>$args</code><code>[</code><code>'style'</code><code>] ) : ?></code>
</div>
<div>
<code> </code><code><div id=</code><code>"div-comment-<?php comment_ID() ?>"</code> <code>class</code><code>=</code><code>"comment-body"</code><code>></code>
</div>
<div>
<code> </code><code><?php </code><code>endif</code><code>; ?></code>
</div>
<div>
<code> </code><code><div </code><code>class</code><code>=</code><code>"comment-author vcard"</code><code>></code>
</div>
<div>
<code> </code><code><?php </code><code>if</code> <code>(</code><code>$args</code><code>[</code><code>'avatar_size'</code><code>] != 0) </code><code>echo</code> <code>get_avatar( </code><code>$comment</code><code>, </code><code>$args</code><code>[</code><code>'avatar_size'</code><code>] ); ?></code>
</div>
<div>
<code> </code><code><?php printf(__(</code><code>'<cite>%s</cite> <span>says:</span>'</code><code>), get_comment_author_link()) ?></code>
</div>
<div>
<code> </code><code></div></code>
</div>
<div>
<code><?php </code><code>if</code> <code>(</code><code>$comment</code><code>->comment_approved == </code><code>'0'</code><code>) : ?></code>
</div>
<div>
<code> </code><code><em </code><code>class</code><code>=</code><code>"comment-awaiting-moderation"</code><code>><?php _e(</code><code>'Your comment is awaiting moderation.'</code><code>) ?></em></code>
</div>
<div>
<code> </code><code><br /></code>
</div>
<div>
<code><?php </code><code>endif</code><code>; ?></code>
</div>
<div>
</div>
<div>
<code> </code><code><div </code><code>class</code><code>=</code><code>"comment-meta commentmetadata"</code><code>><a href=</code><code>"<?php echo htmlspecialchars( get_comment_link( $comment->comment_ID ) ) ?>"</code><code>></code>
</div>
<div>
<code> </code><code><?php</code>
</div>
<div>
<code> </code><code>/* translators: 1: date, 2: time */</code>
</div>
<div>
<code> </code><code>printf( __(</code><code>'%1$s at %2$s'</code><code>), get_comment_date(), get_comment_time()) ?></a><?php edit_comment_link(__(</code><code>'(Edit)'</code><code>),</code><code>' '</code><code>,</code><code>''</code> <code>);</code>
</div>
<div>
<code> </code><code>?></code>
</div>
<div>
<code> </code><code></div></code>
</div>
<div>
</div>
<div>
<code> </code><code><?php comment_text() ?></code>
</div>
<div>
</div>
<div>
<code> </code><code><div </code><code>class</code><code>=</code><code>"reply"</code><code>></code>
</div>
<div>
<code> </code><code><?php comment_reply_link(</code><code>array_merge</code><code>( </code><code>$args</code><code>, </code><code>array</code><code>(</code><code>'add_below'</code> <code>=> </code><code>$add_below</code><code>, </code><code>'depth'</code> <code>=> </code><code>$depth</code><code>, </code><code>'max_depth'</code> <code>=> </code><code>$args</code><code>[</code><code>'max_depth'</code><code>]))) ?></code>
</div>
<div>
<code> </code><code></div></code>
</div>
<div>
</div>
<div>
<code> </code><code><?php </code><code>echo</code> <code>$commentcountText</code><code>; </code><code>//主评论楼层号 - by zwwooooo ?></code>
</div>
<div>
</div>
<div>
<code> </code><code><?php </code><code>if</code> <code>( </code><code>'div'</code> <code>!= </code><code>$args</code><code>[</code><code>'style'</code><code>] ) : ?></code>
</div>
<div>
<code> </code><code></div></code>
</div>
<div>
<code> </code><code><?php </code><code>endif</code><code>; ?></code>
</div>
<div>
<code><?php</code>
</div>
<div>
<code> </code><code>}</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div id="codetool">
<div>
<textarea></textarea>
</div>
</div>
</div>
<p>
样式就自己添加吧~~</p>
頁:
[1]