Je suis en train d'écrire un plugin pour WordPress mais je n'arrive pas à faire marcher mon drapeau. Ça me rend fou! Voici le code sans l'emballage de classe:PHP Variable Scope Numéro
static $js_flag;
function init()
{
add_shortcode('jw_html5', array(__CLASS__, 'jw_html5_shortcode'));
add_action('init', array(__CLASS__, 'jw_add_js'));
}
public function jw_html5_shortcode($atts, $content = null)
{
self::$js_flag = true;
$vid = '';
extract(shortcode_atts(array(
'src' => '/vids/video.mp4',
'width' => 480,
'height' => 320
), $atts));
$vid = "<video id='player' src='$src' width='$width' height='$height' type='video/mp4'> </video>";
return self::$js_flag;
//return $vid;
}
public function jw_add_js()
{
if(self::$js_flag)
{
wp_register_script('jw_player', plugins_url('scripts/player.php', __FILE__), array('jquery'), '.01', true);
wp_register_script('jw_player_script', plugins_url('scripts/jquery.jwplayer.js', __FILE__), array('jquery'), '.01', false);
wp_register_script('jw_playlist', plugins_url('scripts/jquery.playlist.js', __FILE__), array('jquery'), '.01', false);
wp_enqueue_script('jw_player_script');
wp_enqueue_script('jw_playlist');
wp_enqueue_script('jquery');
wp_enqueue_script('jw_player');
}
}
J'ai mis le drapeau dans la fonction shortcode mais ça ne passe à la fonction jw_add_js(). C'est une sorte de chienne à déboguer dans WP. Tout conseil serait super apprécié.
Mise à jour: J'ai trouvé la réponse à cette question après avoir déconné. J'ai dû enregistrer mes scripts et ensuite stocker les poignées dans un tableau. Je passe ensuite le tableau avec la méthode wp_print_scripts(). J'espère que cela aidera quelqu'un!
* Les méthodes sont-elles appelées statiquement? –
le code me semble bien, êtes-vous sûr que ce jw_html5_shortcode est appelé en premier? – bumperbox
Oui, il va afficher la valeur 1 lorsque je vérifie la page, donc la méthode la met à true. – wavyGravy