J'écris un plugin wordpress où j'ai besoin d'injecter une balise (balise d'image HTML) dans la page sur la première page de chargement après que l'utilisateur se connecte - à savoir la page ils sont redirigés vers. Les pages suivantes de la même page ou d'autres pages ne doivent pas inclure ce code de balise.Ajouter du code au site wordpress charger sur la première page charger après le login
J'ai essayé plusieurs façons de le faire.
J'ai ajouté une fonction au hook wp_login. De cette fonction j'ai essayé d'ajouter une autre fonction au crochet wp_footer pour sortir le contenu. Cela ne fonctionnait pas. J'ai donc essayé de régler les deux crochets à l'avant et de définir une variable globale pour indiquer la première charge. Cela n'a pas été pris en compte par ma deuxième fonction et ni l'une ni l'autre n'était une constante.
// in my class constructor
add_action('wp_login', array($this, 'login'));
add_action('wp_footer', array($this, 'add_beacon'));
public function login() {
define('FIRST_RUN', true);
}
public function add_beacon() {
if (defined('FIRST_RUN')) {
// output beacon
}
}
Les deux fonctions crochet feu correctement, mais chaque fois que j'essaie de faire la sortie du contenu dans la seconde dépendant du premier tir de la fonction crochet je reçois pas de sortie.
Des idées comment je peux le faire? Il y a peut-être un moyen de vérifier sans utiliser le hook wp_login.
J'ai également essayé d'utiliser une propriété de classe. Cela n'a pas fonctionné non plus. –
Vous définissez une constante qui expire après le traitement du code. Pour persister, vous devez utiliser une variable $ _SESSION à la place. Dans login(), essayez: $ _SESSION ['first_run'] = true; Ensuite, dans add_beacon(), utilisez: if (isset ($ _SESSION ['first_run'])) {// balise de sortie} –
Je ne suis pas particulièrement désireux d'utiliser la session si je n'ai pas à le faire comme le site que je suis travailler sur s'exécute sur plusieurs serveurs Web. Je pourrais écrire un gestionnaire de session de DB mais cela ajouterait la charge. Je ne suis pas sûr de l'ordre de chargement du hook, mais j'ai supposé que wp_login viendrait avant wp_footer. Si c'est vrai, le code que j'exécuterai dans wp_login n'a-t-il pas été traité avant que Wordpress n'atteigne wp_footer? –