2014-12-28 1 views
0

내 테마에 gridstack.js를 포함한 문제가 있습니다.jQuery는 Wordpress Theme에 정의되어 있지 않지만 wp_register_script 종속성 배열에 정의되어 있습니다.

이 내 코드는 방법입니다

function custom_scripts() { 

    wp_register_script('gridstack.min', get_template_directory_uri() . '/js/gridstack.min.js', array('jquery', 'underscore', 'jquery-ui-core'), '201412028'); 

    wp_enqueue_script('gridstack.min'); 
} 
add_action('wp_enqueue_scripts', 'custom_scripts'); 

그리고 출력은 다음과 같습니다

<script type='text/javascript' src='http://localhost/~user/wordpress/wp-includes/js/jquery/jquery.js?ver=1.11.1'></script> 
<script type='text/javascript' src='http://localhost/~user/wordpress/wp-includes/js/jquery/jquery-migrate.min.js?ver=1.2.1'></script> 
<script type='text/javascript' src='http://localhost/~user/wordpress/wp-includes/js/underscore.min.js?ver=1.6.0'></script> 
<script type='text/javascript' src='http://localhost/~user/wordpress/wp-includes/js/jquery/ui/core.min.js?ver=1.11.2'></script> 
<script type='text/javascript' src='http://localhost/~user/wordpress/wp-content/themes/manfredinator/js/gridstack.min.js?ver=201412028'></script> 

하지만 방화범은 여전히 ​​나에게 "형식 오류 : $이 정의되지"를 제공합니다.

나는 이것에 대한 해결책을 가지고하지만 난 그것을 좋아하지 않아 :

function custom_scripts() { 
    wp_register_script('jQuery.min', get_template_directory_uri() . '/js/jquery-1.10.2.min.js', array(), '1.10.2'); 
    wp_enqueue_script('jQuery.min'); 

    wp_register_script('gridstack.min', get_template_directory_uri() . '/js/gridstack.min.js', array('underscore', 'jquery-ui-core'), '201412028'); 
    wp_enqueue_script('gridstack.min'); 
} 
add_action('wp_enqueue_scripts', 'custom_scripts'); 

그래서 내 질문은 : jQuery 라이브러리가 (나는 또한 다른 플러그인을 시도 플러그인이 작동하지 WP에 포함 않는 이유 jQuery.min을 사용하고 동일한 문제가 발생했습니다.) 그리고이 문제를 해결하는 가장 좋은 방법은 무엇입니까?

답변

1

WordPress에 포함 된 jQuery 버전이 noConflict mode에 있기 때문입니다. 즉, $ 바로 가기를 사용할 수 없지만 jQuery은 여전히 ​​있습니다.

그것은 당신의 코드에있는 경우, 당신이 할 수있는 간단한 즉시-호출 기능 식 (인생)에서 당신의 모든 코드 wrapp 다음과 같은 :

(function($) { 
    //Your code here. 
})(jQuery); 

또는 당신이 문서에 모든 것을 포장하는 경우 준비 처리기, 이것을 사용하십시오. 당신이 사용하려고된다 jQuery 플러그인에 문제가 있다면

jQuery(function($) { 
    //Your code here. 
}); 

, 당신은 플러그인 코드를 패치해야합니다. 또한 플러그인 작성자에게 코드 수정을 요청하십시오. 플러그인은 $ 바로 가기 정의에 의존해서는 안됩니다.

+0

대단히 감사합니다. 실제로 IIFE를 사용하여 플러그인을 변경했는데 이제는 작동합니다. 당신이 말한 것과 같았습니다. 이전의 것들은 바로 가기에 의존했다. – ClarkAdams

관련 문제