2010-07-14 29 views
2

有人能告訴我爲什麼這段代碼不起作用嗎? is_page()不起作用。在WordPress中有條件的is_page()有問題

function tao_scripts() { 
if (!is_admin()) { 


    wp_deregister_script('jquery'); 
    wp_register_script('jquery', get_template_directory_uri() . '/js/jquery-1.4.2.min.js', false, '1.4.2'); 
    wp_enqueue_script('jquery'); 

    if (is_page()) { 
     wp_register_script('jquery-validate', get_template_directory_uri() . '/js/jquery.validate.min.js', 'jquery', '1.7'); 
     wp_enqueue_script('jquery-validate'); 
    }  
    } 
} 
add_action('init', 'tao_scripts'); 

該代碼是在一個PHP文件,其中包括我的我的functions.php。

我嘗試了所有我能找到/想到的。沒有is_page()條件,它就可以工作。我用wp_reset_query()嘗試過,沒有幫助。我確信WordPress的知道它的一頁。 is_page(34,'name','Name')也不會幫助你。

回答

0

技術上,Torok是錯誤的。 is_page在循環之外完美地工作。我想它不工作,因爲你沒有正確使用wp_register_script。依賴關係需要是一個數組:

wp_register_script('jquery-validate', get_template_directory_uri() . '/js/jquery.validate.min.js', array('jquery'), '1.7'); 

這應該做到這一點。

編輯:

由於TheDeadMedic指出的那樣,你也應該勾在這以後的鉤子。最早應該使用的是wp。我實際上建議使用template_redirect,因爲那樣只會在前端運行(除非你想在後端替換jQuery)。

+2

你應該使用'wp'鉤子而不是'init' - WordPress在初始階段沒有分析請求,所以它不知道它是否是一個頁面。 – TheDeadMedic 2010-07-14 15:07:00

+0

絕對正確。我錯過了'WP_Query'的構造函數在沒有信息傳遞給它的情況下不解析參數。接得好。 – 2010-07-14 15:54:11

+0

當然啊。這是有道理的,它解決了我的問題。謝謝大家:D並感謝指出我的非數組依賴關係,修復也:) – ugreen 2010-07-16 21:45:42

0

你可以嘗試用特定的頁面來測試你的函數:

if (is_page(34, 'name', 'Name')) 
{ 
    // your code here 
} 
+0

前查詢對象我已經試過了,剛纔又過這個動作發生的方式才能做到。不工作 – ugreen 2010-07-14 10:49:50

2

它與動作

add_action('init', 'tao_scripts'); 

提取