2013-03-19 2 views
0

пытается выяснить, что я делаю неправильно. Я пытаюсь вставить строку в db, в то время как wordpress inits.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

+0

У вас есть 404, когда вы загружаете свою страницу? Запросы Ajax также инициируют 'init'. Посмотрите на этот вопрос. К тому же тема: http://stackoverflow.com/questions/4372596/wordpress-why-is-the-init-hook-invoked-multiple-times – RRikesh

+0

nope, no 404's, я видел другие вопросы по этой проблеме и пытался почти все, что мне удалось выкопать ... – alechko

Смежные вопросы