web-dev-qa-db-fra.com

Filtrez certaines actions de plugins dans wp head/wp_footer

J'utilise un plugin appelé "syntaxhighlighter".

Je sais pas poser des questions spécifiques au plugin mais plutôt comment filtrer les actions ajoutées au wp_head/wp_footer conditionnellement ...

Ceci est une partie du script du plugin:

// Outputting SyntaxHighlighter's JS and CSS
add_action( 'wp_head', array( $this, 'output_header_placeholder' ), 15 );
add_action( 'wp_footer', array( $this, 'maybe_output_scripts' ), 15 );

Maintenant, je voudrais ajouter un filtre qui dit:

if(is_home() || is_category()) {
   // REMOVE THOSE SCRIPS
}

.
Je ne veux pas changer ce code de plugin parce que j'aurais
à se souvenir de le refaire quand il met à jour ...

Comment puis-je filtrer ces actions en cas de besoin?

2
Sagive SEO

Vous pouvez essayer ceci (non testé):

add_action( 'wp_head', 
   function(){
       // your conditions:
       if( is_home() || is_category() )
       {
           // access the global SyntaxHighlighter object instantiated at 'init'.
           global $SyntaxHighlighter;

           // remove your action hooks:
           remove_action( 'wp_head',    
                           array( $SyntaxHighlighter, 'output_header_placeholder' ),
                           15 );
           remove_action( 'wp_footer', 
                           array( $SyntaxHighlighter, 'maybe_output_scripts' ),
                           15 );
       }
   }
);

pour supprimer ces crochets d’action conditionnellement avec des balises de gabarit Nous utilisons l'action wp_head avec la priorité par défaut 10.

Vous pouvez utiliser d'autres hooks, mais ils doivent être déclenchés avant wp_head avec une priorité 15 et après la création de l'objet $SyntaxHighlighter via le crochet init .

Vous devez également vous assurer que les balises de modèle que vous souhaitez utiliser dans vos contrôles conditionnels sont disponibles dans le hook que vous avez choisi.

4
birgire