麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > CMS > Wordpress > 正文

wordpress中實現嵌套評論回復添加@功能

2024-09-07 00:51:06
字體:
來源:轉載
供稿:網友

構成原理:打開 wp-includes/comment-template.php,查找 Walker_Comment 類,以下展開介紹這 4 個方法.

start_lvl

子菜單列表的開始標簽,默認是 <ul>,在第一個子條目之前生成.

end_lvl

對應 start_lvl 的子菜單列表的結束標簽,默認是 </ul>,在最后一個子條目之后生成.

start_el

條目的前半部分,包括開始符號和評論內容,開始符號是 <div> 或者 <li> (外層是 ol 或 ul 的情況下是 <li>); 評論內容就是評論的相關信息顯示,WordPress 向我們提供了可即用的布局,但也可以通過 callback 方法改變評論內容的結構,調用回調函數的部分代碼示意如下:

  1. function start_el(&$output$comment$depth$args) { 
  2.  $depth++; 
  3.  $GLOBALS['comment_depth'] = $depth
  4.  
  5.  // 如果定義了回調函數, 則調用其回調函數, 并終止后面的處理. 
  6.  if ( !emptyempty($args['callback']) ) { 
  7.   call_user_func($args['callback'], $comment$args$depth); 
  8.   return
  9.  } 
  10.  
  11.  // 如果沒有定義回調函數, 則執行本方法中后面的處理, 生成默認的評論布局. 
  12.  ... 

我們所謂的自定義嵌套回復,就是創建一個 callback 方法,并在 wp_list_comments 方法中調用這個它生成自定義的評論結構.也可以認為是定義一個新的方法,取代 start_el 方法內部的默認布局.

end_el

條目的后半部分,其實就一個結束符號.這里也提供一個名為 end-callback 的回調方法, 原理和 start_el 一樣, 是一個自定義的處理方式. 但是 end-callback 并不常用, 因為 end_el 只生成一個簡單的結束符號, 實在沒必要為此再定義一個方法.我覺得只有在需要復雜的評論結構時, 才有必要用到 end-callback. 如: 要在評論的上方和下方都添加背景圖效果, 評論框內可能需要多一個 DIV 層, 則可能用上 end-callback. 在 callback 方法中以 <div><div> 作為開始, 而 end-callback 中以 </div></div> 結束掉.

舉例說明,下面將以一個嵌套回復的例子來證明上述內容.現有評論嵌套結構如下:

  1. comment (1) 
  2.         comment (1.1)  
  3.         comment (1.2) 
  4.             comment (1.2.1)  
  5.     comment (2) 

依照上述方法,執行順序如下:

  1. start_el (1) 
  2. start_lvl (1) 
  3. start_el (1.1) 
  4. end_el (1.1) 
  5. start_el (1.2) 
  6. start_lvl (1.2) 
  7. start_el (1.2.1) 
  8. end_el (1.2.1) 
  9. end_lvl (1.2) 
  10. end_el (1.2) 
  11. end_lvl (1) 
  12. end_el (1) 
  13. start_el (2) 
  14. end_el (2) 

假設方法配置都是默認的,則代碼如下:

  1. start_lvl 為 <ul> 
  2. end_lvl 為 </ul> 
  3. start_el 為 <li> 和內容部分 
  4. end_el 為 </li> 

又設 “…” 為評論內容,則代碼生成如下:

  1. <li> 
  2.  ... (1) 
  3.  
  4.  <ul> 
  5.   <li> 
  6.    ... (1.1) 
  7.  
  8.   </li> 
  9.   <li> 
  10.    ... (1.2) 
  11.  
  12.    <ul> 
  13.     <li> 
  14.      ... (1.2.1) 
  15.  
  16.     </li> 
  17.    </ul> 
  18.   </li> 
  19.  </ul> 
  20. </li> 
  21. <li> 
  22.  ... (2) 
  23.  
  24. </li> 

好了原理講了下面我們來實現了.

一、添加評論@回復js代碼

js代碼如下,可自行新建js文件調用,也可添加到已有的js文件,代碼所在js文件必須在文章頁面有調用:

  1. /*   
  2. 嵌套評論@回復,添加@鏈接,  
  3. */   
  4.     jQuery(document).ready(function($){         //Begin jQuery     
  5.         $(‘.reply’).click(function() {     
  6.             var atid = ’“#’ + $(this).parent().attr(“id“) + ’”‘;            //獲取當前評論的鏈接地址      
  7.             var atname = $(this).prevAll().find(“.fayan”).text();           //獲取當前評論的姓名    
  8.             $(“#comment”).attr(“value”,’<a href=’ + atid + ’>@’ + atname + ’</a>’ + “:”).focus();   
  9.             });    
  10.         $(‘.cancel-comment-reply a’).click(function() {                     //點擊取消回復評論清空評論框的內容     
  11.             $(“#comment”).attr(“value”,”);   
  12.             }   
  13.             );   
  14.     }) 

注意對照我所調用的相應div 的ID,對應你所要修改的主題,對照性修改!

二、修改CSS代碼

接下來,把子評論的右移去掉(這玩意兒太占手機屏幕了)

.commentlist li.comment ul.children {margin-left:20px;border-top: 0px;}  

把其中的margin-left:20px;刪去,或修改為margin-left:0;

三、清除function函數模板中的沖突函數

如果你的主題添加了評論跳轉代碼,則要修改其中的代碼,避免造成@鏈接跳轉錯誤,可對照如下代碼:

  1. /*評論鏈接跳轉*/      
  2. add_filter(‘get_comment_author_link’, ’add_redirect_comment_link’, 5);      
  3. //add_filter(‘comment_text’, ’add_redirect_comment_link’, 99);      
  4. function add_redirect_comment_link($text = ”){      
  5.     $text=str_replace(‘href=“‘, ’href=”‘.get_option(‘home’).’/?go=’, $text);      
  6.     $text=str_replace(“href=’”, “href=’”.get_option(‘home’).“/?go=”, $text);      
  7.     return $text;      
  8. }      
  9. add_action(‘init’, ’redirect_comment_link’);      
  10. function redirect_comment_link(){      
  11.     $redirect = $_GET['go'];      
  12.     if($redirect){      
  13.         if(strpos($_SERVER['HTTP_REFERER'],get_option(‘home’)) !== false){      
  14.             header(“Location: $redirect”);      
  15.             exit;      
  16.         }      
  17.         else {       
  18. header(“Location: /”);      
  19. exit;      
  20. }      
  21. }      

可以看到其中的第3行已經被我注釋掉了,主要原因就是該行代碼會在評論內容(text)存在的鏈接自動加上go跳轉,我們原來的評論鏈接為:

  1. <a href=“#comment-976″>@XXX</a>    
  2. 其相當于完整鏈接: 
  3. <a href=“/error-sto.html#comment-976″>@XXX</a>   
  4. 當被加上go跳轉后則變成: 
  5. <a href=“/?go=#comment-976″>@XXX</a>   

打開這個鏈接試試,是不是跳轉到首頁去了,這樣的話,@鏈接就失去意義了,為了防止這樣的“悲劇”,我們一定要清除沖突的代碼,給你的@鞏固地位.

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 久久久电影电视剧免费看 | 成人在线97 | 成人一级片毛片 | 午夜小视频免费观看 | 高清av免费 | 欧美日韩亚洲精品一区二区三区 | 日韩精品dvd | 999精品久久久 | 欧美成人免费电影 | 国产精品9191 | v11av在线视频成人 | 国产精品www | 成人做爰s片免费看网站 | 欧美一级毛片欧美一级成人毛片 | 亚洲成人播放 | 一边吃奶一边插下面 | 亚洲日色| 369看片你懂的小视频在线观看 | 亚洲电影免费观看国语版 | 伦一区二区三区中文字幕v亚洲 | 成人一区二区在线观看视频 | 免费毛片视频 | 俄罗斯hdxxx| 色淫视频 | 久久久www成人免费毛片 | 在线成人一区二区 | 毛片视频免费观看 | 亚洲热线99精品视频 | 法国性经典xxxhd | 国产精品7区 | 欧美第1页 | 久草在线视频网 | hd porn 4k video xhicial| 韩国一级免费视频 | 一级成人免费 | 亚洲一区二区在线视频 | 亚洲一区二区三区视频 | 免费一区二区三区 | 日韩精品一二三区 | 最新中文字幕日本 | 久久久久九九九女人毛片 |