web-dev-qa-db-fra.com

WpAlchemy - _global_head est sorti 3 fois

Aujourd'hui, en essayant d'utiliser la fonction de champs répétés (have_fields_and_multi), j'ai découvert qu'avec la dernière version de WpAlchemy (1.6.1) et la dernière version de Wordpress (4.6.1), les blocs JavaScript en ligne de MetaBox.php sont affichés 3 fois. sur la page d'administration. Cela rompt la fonctionnalité car 3 ensembles d'événements onclick sont inclus.

J'ai essayé cela sur deux sites locaux avec le même résultat.

J'essaie de le contourner via event.stopImmediatePropogation comme solution temporaire, mais j'aimerais avoir quelque chose de plus solide. (J'ai ajouté ceci comme un problème à https://github.com/farinspace/wpalchemy/issues/111 )

Suis-je seul à faire l'expérience de ce problème et quelqu'un a-t-il une idée de la façon de le résoudre?

1
Jonny Perl

La clé se trouvait dans le script original ici - la ligne 460 de MetaBox.php a le commentaire "// tâche: lors de la première exécution, définissez une constante pour empêcher d'autres instances de s'exécuter à nouveau ...". Le code ci-dessous a résolu ce problème.

if(!defined('HEAD_CALLED')):
  add_action( 'admin_head', array( $this, '_global_head' ) );
  define('HEAD_CALLED', true);            
endif;
3
Jonny Perl