2013-03-19 29 views
0

試圖找出我做錯了什麼。我試圖在wordpress inits中插入一行到db中。do_action/add_action多次觸發

所以,我做:

<?php 
add_action('demo_init', 'demo_do', 1); 
do_action('demo_init'); 

function demo_do(){ 
    # print(did_action('demo_init')); # = 1 time called 
    ### some more code ### 
    global $wpdb; 
    $wpdb->demo_log = $wpdb->prefix . 'demo_log'; 
    $result = $wpdb->insert($wpdb->demo_log, array('date' => $event['date'], 'ip' => $event['ip'])); 
} 

這給了我2 - 4條記錄寫在同一事件。 試圖使用'init'/'send_headers'鉤子或全局變量來計算函數的運行,但一切都適用,每次運行是唯一的...

有人可以幫我弄清楚這一點嗎?

回答

0

嘗試直接掛鉤init

function demo_do(){ 
    #Your function 
} 

add_action('init', 'demo_do'); 
+0

我已經在我的問題寫道,我已經試過了,用'ADD_ACTION( 'send_headers', 'demo_do');'有相同的結果 – alechko 2013-03-19 11:24:17

+0

當你加載你的網頁時,你有任何404顯示嗎? Ajax請求也會觸發'init'。看看這個問題。有同樣的話題:http://stackoverflow.com/questions/4372596/wordpress-why-is-the-init-hook-invoked-multiple-times – RRikesh 2013-03-19 11:37:28

+0

不,404的,我已經看到關於這個問題的其他問題,並嘗試幾乎所有我設法挖掘的東西...... – alechko 2013-03-19 11:40:25