寫教學的最大目的是教會未來的自己

解決 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

Post to Twitter Post to Plurk Post to Facebook Send Gmail

Leave a Reply

Copyright © 2024. All Rights Reserved.

歡迎光臨
初音