人是朝前走的,軟體也是。
這次 Wordpress 4.4 再度更新了不少東西,但很多東西對我們來說完全無用,或沒有必要。
當然還有一些使用上的問題,也是令人哭笑不得。
很多人發 QQ 給我,問及 WordPress 4.4 的幾個問題,該如何解決。
想想還是把程式碼放上來,順帶簡單描述一下問題。
AJAX 評論翻頁後,頁碼導航消失。
這個問題,主要是超出 WP 主迴圈後,得不到評論總頁數為多少所致。
找到你的 AJAX 載入評論頁面的 PHP 函式,找到類似程式碼:
paginate_comments_links(‘current=’ . $pageid . $baseLink . ‘&prev_text=上一頁&next_text=下一頁’);
修改為
$totalPage = ‘&total=’.get_comment_pages_count($comments);
paginate_comments_links(‘current=’ . $pageid . $totalPage . $baseLink . ‘&prev_text=上一頁&next_text=下一頁’);
如此便解決了。
升級到新版本後,樓層號出錯,統計的數量也不對。
這個問題,其實應該說是兩個問題才對。
對於樓層號出錯的,主要是因為 $in_comment_loop 的判斷有問題,新版本使用 wp_list_comments 函式後,傳遞的 $in_comment_loop 都是空,我們需要將評論回撥函式中的判斷修改一下即可。大概在評論回撥函式找到類似程式碼如下:
$page = ( !empty($in_comment_loop) ) ? get_query_var(‘cpage’) : get_page_of_comment( $comment->comment_ID, $args );
修改為
$page = ( get_query_var(‘cpage’) ) ? get_query_var(‘cpage’) : get_page_of_comment( $comment->comment_ID, $args );
即可,評論回撥函式的名稱,可以透過找到你使用的 wp_list_comments 函式中的 callback 引數看到。如:
wp_list_comments(‘type=comment&callback=lopercomment&max_depth=10000’);
那麼必有 lopercomment 這個評論回撥函式。
當然樓層號還出錯,那就只能再檢查一下回撥函式,看哪裡錯了。各家寫法不一,無法一一列舉。
對於統計數量不對,其原因主要是 WP 改變了統計方式,以前是輸出全部評論數,現在只輸出了設定規定的數量 (儀表盤=> 設定=> 討論) 。
而我們大多數程式碼偷了個懶,只是單純的 count 評論迴圈的評論數,當 WP 改變方式後,就錯誤了。
因為各家程式碼不同,寫法不同,而且可能主題需要修改多個檔案,我就大概講下,找到類似於:
count($comments);
或者
count($comments_by_type[‘comment’]);
等一些計數方法,將其改為
get_comments(array(‘status’ => ‘approve’, ‘post_id’=> $post->ID, ‘count’ => true));
當然,你可以用
get_comments_number($post->ID);
但是都要清除一些其他計數。一般主題都有帶。
如果你想統計 Traceback 或 Pingback 的數量,不建議使用:
count($comments_by_type[‘pings’]);
而是用
get_comments(array(‘status’ => ‘approve’, ‘post_id’=> $post->ID, ‘type’=> ‘pings’, ‘count’ => true));
來獲得計數。
說句實在話,更喜歡透過 sql 來得到計數。方便。或許回頭應該整合下,寫個函式。
圖片已經在設定做了不裁剪,但新版本,還是會自動生成。
這個是因為 WP 新版本,新增了圖片自適應 (響應式),以相容各種裝置。
如果是跟我一樣沒做自適應的,就沒必要去特意裁剪圖片去減小圖片大小,浪費。透過:
add_filter( ‘max_srcset_image_width’, create_function( ”, ‘return 1;’ ) );
可以停用這一特性。
那些已經做了響應式主題,可以考慮使用這一特性,畢竟在手機端,會自動裁剪為合適大小,以減小圖片大小,加快載入,減少流量。當然,實際用起來怎麼樣,我也不知道。
新版本載入了幾個頭和 js
新版本可以自動識別所有帶 oEmbed(URL) 特性的,可以在文章內嵌入其他 WP 網站。具體體現比如,你在編輯器寫了對方部落格的連結,如果其部落格有宣告支援 oEmbed(URL),那麼會自動轉換成帶樣式的連結 (有標題、摘要、評論數、分享按鈕) 。
這一特性怎麼說呢,基本用不上。
停用這一特性可以使用外掛 Disable Embeds,他會停用掉 js 的載入及自動轉換。
至於 wp-json Link 這個頭,是給 REST API 用的,透過:
remove_action( ‘wp_head’, ‘rest_output_link_wp_head’ );
來去掉。如果實在是不想用 REST API,還可以透過:
add_filter(‘rest_enabled’, ‘_return_false’);
add_filter(‘rest_jsonp_enabled’, ‘_return_false’);
remove_action(‘template_redirect’, ‘rest_output_link_header’);
來停用。
新版本,發表文章後,圖片沒有燈箱效果
新版本,確實在預設配置,去掉了自動連結到附件這一特性 (新版本,「連結到」 的預設值是無),這使得附件連結不會自動連結到媒體檔案。也導致燈箱判斷不到 a 標籤 (只有 img 標籤),而無法工作。
透過新增:
update_option(‘image_default_link_type’, ‘file’ );
可以解決,只要執行一次就好。用完就刪掉這段程式碼。
偷懶的話,你可以訪問 http://你的部落格地址/wp-admin/options.php 進入全部設定,找到 image_default_link_type 這一項,設定為 file,記得儲存設定。可以修改的值為 none 、 file 、 post 、 custom,分別代表為無、媒體檔案、文章頁面、自定義。
其他問題,暫時沒人問,我也沒發現。
可以提,但儘量自行解決。
祝新年快樂。