2011-03-10 2 views
2

여기에 몇 가지 비슷한 질문이 있지만, 필자가 발견 한 것만 큼 명확하지는 않습니다. 여기 내 WP 테마에 최신 jquery 버전을 포함하고 바닥 글에 나타나는지 확인하는 데 사용하는 코드가 있습니다.jquery에서 버전 쿼리 var를 제거하는 방법은 WordPress의 기능을 포함합니다.

function current_jquery($version) { 
    global $wp_scripts; 
    if ((version_compare($version, $wp_scripts -> registered[jquery] -> ver) == 1) && !is_admin()) { 
     wp_deregister_script('jquery'); 
     wp_register_script('jquery', 
      'http://ajax.googleapis.com/ajax/libs/jquery/'.$version.'/jquery.min.js', 
      false, $version, true); 
    } 
} 
add_action('wp_head', current_jquery('1.5.1')); 

그때 header.php에서 wp_enqueue_script("jquery");을 사용하고 내가 jQuery를 얻을 것을 제외하고, 작동은 "이 jquery.min.js? 버전 = 1.5.1"로 끝나는 포함, 나는 제거 할 쿼리 부분.

wp_register_script 함수를 확인하고 내가 읽은 쿼리에서 마지막 변수의 두 번째 문자열을 빈 문자열 ''로 바꿔야합니다. 그러나, 나는 그것을 할 때 "default"wordpress 버전을 얻습니다. 즉, "jquery.min.js? ver = 3.0.1"(또는 그 때 일어날 수있는 것은 무엇이든)입니다.

나는 (current_jquery, add_action 및 wp_enqueue_script 사이에서) 여기에서 진행되는 모든 것을 100 % 이해하지 못하기 때문에 어디서부터 시작해야할지 모르겠습니다. ($ version이 WP 버전 값을 어떻게 든 할당 받습니까?) 내가 아는 전부 wp_register_script가 문서화 된 방식으로 버전 입력에 응답하지 않는 것입니다. 내가 여기서 무엇을 놓치고 있니?

더 나은 방법이 있어야하기 때문에 출력 "src"문자열에 문자열 연산 (split, reg_replace, 무엇이 있습니까?)을 사용하지 않도록하십시오.

+0

그냥 호기심에서 - 왜 쿼리 부분을 제거 하시겠습니까? –

+1

더 많은 사이트에서 jQuery의 '수동'포함을 사용한다는 가정하에 'ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js'를 간단히 참조 할 것입니다. "쿼리 문자열없이. 즉, 파일이 이미 사용자 브라우저에 캐싱되고 내 사이트를 방문 할 때 파일을 다시 다운로드 할 필요가 없습니다. 쿼리 문자열이이를 엉망으로 만듭니다. – ilia

+0

아, 그래, 완벽하게 이해가된다. –

답변

6

코멘트 wp_register_script 위의 버전 쿼리 문자열을 사용하지 NULL 통과 제안 :

* @param string|bool $ver (optional) Script version (used for cache busting), set to NULL to disable 

및 명시 적으로 WP_Scripts에 null와 비교되는 것 것 같습니다 :

if (null === $this->registered[$handle]->ver) // Line 93 in 3.0 

을 그래서 ... 나는 빈 문자열이 아닌 null을 전달할 것입니다.

+0

물론! 나는 너무 어리 석다. 그것이 바로 그 것이었다. 지금부터는 코드의 주석보다 더 많은 코드를 신뢰하게 될 것입니다. :) 감사합니다. – ilia

+0

@ilia 여러분이 정말로 신뢰할 수있는 유일한 것에 관해서는 코드 자체입니다 :) 당신은 환영합니다! –

+0

매우 좋습니다! 나는 나이에서 이것을 찾고 있었다. :) 절대로 WP 핵심 코드를 파고 생각했다. –

관련 문제