2011-07-26 2 views
0

donc que je développe mon premier plugin WordPress et je rencontre quelques difficultés ... je le fais Orienté Objet ...
Dans le fond, quand « plugins_loaded », je crée un nouvelle instance de myClass. Il ajoute également un javascript, chaque fois qu'une page est chargée. L'enregistrement de ce script fonctionne, car j'obtiens un fichier console.log à chaque chargement de page. Il enregistre ensuite une action sur 'publish_post' qui est déclenchée lorsqu'un administrateur publie (enregistre) un nouveau message et appelle ma méthode publish_post().
La méthode est appelée quand un message est publié; Je le sais parce que si je décommente c'est deux premières lignes, le sctipt meurt avec mon var_dump.
Mon problème est que wp_enque_script() ne fonctionne pas dans cette méthode. Pour une raison quelconque mon script n'est pas appelé ...
Voici le code:plugins WordPress wp_enque_script()

<?php 
class myClass{ 
    function __construct(){  
     // hooks & filters.. 
     add_action('publish_post', array($this, 'publish_post')); 
     wp_enqueue_script( 
      'plugin', //$handle 
      plugins_url('/js/plugin.js', __FILE__)//$src 
     ); 
    } 

    function publish_post(){ 
     //global $wp_query; 
     //die(var_dump($wp_query)); 
     wp_enqueue_script( 
      'publish', //$handle 
      plugins_url('/js/publish.js', __FILE__)//$src 
     ); 
    } 
} 
/* Initialise outselves */ 
add_action('plugins_loaded', create_function('', 'global $myObject; $myObject = new myClass;')); 
?> 

Quelqu'un a une idée pourquoi cela se passe? thanx

Répondre

0

Juste eu le même problème. Vous devez l'ajouter à un hook, par exemple l'init (j'ai essayé avec le hook admin_head mais ça n'a pas fonctionné donc j'ai choisi init car je l'ai vu dans un autre plugin et ça marche très bien pour moi)

vous construisez ajouter:

add_action('init', array($this, 'loadMyScripts')); 

et dans la fonction appelée par l'action:

public function loadMyScripts() 
{ 
wp_enqueue_script( 
      'publish', //$handle 
      plugins_url('/js/publish.js', __FILE__)//$src 
     ); 

} 
Questions connexes