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() 메서드를 사용하여 배열을 전달합니다. 희망이 사람을 도울 것입니다!
* 메서드가 정적으로 호출되는 이유는 무엇입니까? –
코드가 잘 보입니다. jw_html5_shortcode가 먼저 호출되는 것이 확실합니까? – bumperbox
예, 페이지를 확인할 때 값이 1로 출력되어 메소드가 true로 설정됩니다. – wavyGravy