解決 wp-postview 計數失敗的問題
這個問題主要是因為 修改過 wordpress 核心所產生的…..
目前WP-postview 有兩種計數模式,一種是 透過PHP的方式 計數,另一種則是為了解決 快取功能 的ajax的技術方式。
這次碰到的問題就主要是ajax的問題。
發生原因:
在wp-postview外掛中,主要的code都在wp-postview.php當中,其中要wordpress 載入ajax指令的是下面這支function
function wp_postview_cache_count_enqueue()
的下面兩行指令(我有些參數修改了…)
wp_enqueue_script( ‘wp-postviews-cache’, $tempJS, array( ‘jquery’ ), ‘1.68’ , true );
wp_localize_script( ‘wp-postviews-cache’, ‘viewsCacheL10n’, array( ‘admin_ajax_url’ => $tempJS2, ‘post_id’ => intval( $post->ID ) ) );
先簡單說明一下,這兩行的API都是 wordpress的載入js的指令,在執行過後會通知wordrpress 在載入頁面的時候載把js引入到網頁中,這中常在wp_header();或是wp_footer();中執行,所以theme中的這兩行指令絕對不要拿掉….
OK經過測試,上面這兩行指令有正常執行,經過測試主要是因為wordpress的jquery 載入設定被改掉了…
剛剛我說,wordpress 會依照你的要求 引入你要的JS,但是在這之前他會要你先寫下你的js有需要那些前置JS,而我們所需要的jquery雖然有載入,但是不是用wordpress 官方的載入方式,導致wordpress 以為缺少前置JS 而不予載入
解決方法,在下列檔案中
\wp-includes\script-loader.php
有下列三行code,請確定他都有在跑…..
// jQuery
$scripts->add( ‘jquery’, false, array( ‘jquery-core’, ‘jquery-migrate’ ), ‘1.10.2’ );
$scripts->add( ‘jquery-core’, ‘/wp-includes/js/jquery/jquery.js’, array(), ‘1.10.2’ );
$scripts->add( ‘jquery-migrate’, “/wp-includes/js/jquery/jquery-migrate$suffix.js”, array(), ‘1.2.1’ );
就是這樣….
參考資料
http://yusi123.com/3086.html
http://codex.wordpress.org/Function_Reference
Leave a Reply