2010-12-07 3 views
7

Je suis à une perte réelle à ce problème. Je viens de créer un plug-in et d'enregistrer les actions dans le plug-in (comme je ne vois pas la sortie du traitement), j'ai ajouté un crochet à init comme ceci:Wordpress: pourquoi le hook init est-il invoqué plusieurs fois?

add_action('init', 'test_hook'); 

function test_hook() 
{ 

    global $wpdb; 
    $message = "Some informational message here"; 
    $wpdb->insert("pq_logs", array("message"=>$message), array("%s")); 

} 

Qu'est-ce qui porte moi dans la soumission est que au lieu d'obtenir une ligne d'entrée par chargement de la page, je reçois de 1 à 8 lignes de la même entrées, avec différents horodateurs. Le nombre d'entrées saisies est incohérent et semble être totalement aléatoire (parfois je pense que cela dépend des conditions climatiques actuelles ou de l'indice boursier).

J'ai fait les contrôles standard, éteint tous les autres plug-ins, mais en vain. J'ai cherché le code pour tout ce qui fait do_action('init'), mais on m'a seulement signalé un appel au wp-settings.php.

Avez-vous déjà rencontré? Qu'est-ce que tu as fait?

Répondre

16

Avez-vous des liens dans le site (images, scripts, feuilles de style, etc.) qui sont 404? Si c'est le cas, la page 404 par défaut affichera une page "Vous recherchez quelque chose qui n'est pas présent" dans le thème du site par défaut, de sorte que le hook init sera appelé une fois pour la requête initiale, plus une fois pour chaque mauvais lien.

Doublecheck avec Firebug et voir si quelque chose est mal appelé.

+0

Bonne idée, je vais vérifier et voir si c'est ça. –

+0

Vous, monsieur, êtes merveilleux. C'est ça, les images manquantes dans css invoquées via url(). Merci! –

+1

Juste pour ajouter, lors de l'inspection des en-têtes HTTP qui vont et viennent (j'ai utilisé l'extension HTTP Live Header HTTP), il y a quelques plug-ins qui font des acrobaties ajax (le mien est WP E-commerece). Il le fait en invoquant index.php? Wsc_something = quelque chose, ce qui bien sûr déclenche également le hook init. –

1

Après la réponse de Rob Williams, je l'ai lu ce post:

http://www.tastyplacement.com/how-to-remove-link-relprev-and-link-relnext-from-wordpress-head

Et réalisé que le lien balises avec rel = "next" et rel = "prev" est en cours d'exécution de mon crochet init pour une deuxième fois sur mon site WordPress 3.5.1. Ces balises peuvent être supprimés en ajoutant ceci au fichier functions.php thème:

remove_filter('wp_head','adjacent_posts_rel_link_wp_head',10); 
Questions connexes