2010-08-08 46 views
0

我正在爲WordPress寫一個插件,但我似乎無法讓我的旗幟繼續。這讓我瘋狂!下面是無類包裝代碼:PHP變量作用域問題

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'); 
    } 


} 

我給自己定的簡碼功能的標誌,但它不是將它傳遞給jw_add_js()函數。在WP中調試有點麻煩。任何建議將超級讚賞。

更新:我找到了解決這個問題後的答案。我必須註冊我的腳本,然後將句柄存儲在一個數組中。然後我使用wp_print_scripts()方法傳遞數組。希望這會幫助別人!

+0

*這些方法是靜態調用的嗎? – 2010-08-08 21:08:26

+0

代碼對我來說看起來很好,你確定jw_html5_shortcode是首先被調用的嗎? – bumperbox 2010-08-08 21:17:31

+0

是的,當我檢查頁面時,它會將值輸出爲1,以便該方法將其設置爲true。 – wavyGravy 2010-08-08 21:58:34

回答

0

我找到了解決這個問題後的答案。我必須註冊我的腳本,然後將句柄存儲在一個數組中。然後我使用wp_print_scripts()方法傳遞數組。希望這會幫助別人!