2013-03-19 95 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