2010-08-08 11 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

* 메서드가 정적으로 호출되는 이유는 무엇입니까? –

+0

코드가 잘 보입니다. jw_html5_shortcode가 먼저 호출되는 것이 확실합니까? – bumperbox

+0

예, 페이지를 확인할 때 값이 1로 출력되어 메소드가 true로 설정됩니다. – wavyGravy

답변

0

나는 이것에 대한 답을 뒤죽박죽으로 발견했다. 스크립트를 등록한 다음 핸들을 배열에 저장해야했습니다. 그런 다음 wp_print_scripts() 메서드를 사용하여 배열을 전달합니다. 희망이 사람을 도울 것입니다!