source

wp_enqueue_script로 Google 지도 API 로드 중

nicesource 2023. 9. 21. 20:35
반응형

wp_enqueue_script로 Google 지도 API 로드 중

다음 구문을 사용하여 Google 지도 API를 로드하려고 합니다.

add_action('admin_enqueue_scripts', 'load_google_maps');

...

function load_google_maps()
{
  // The actual API key is configured in an options page
  $key = get_option('google_maps_api_key');
  $gmaps_url = 'http://maps.googleapis.com/maps/api/js?key=' . $key . '&sensor=false';
  wp_enqueue_script('google-maps', $gmaps_url, NULL, NULL);
}

워드프레스는 &에서 &#038로 탈출하고 있습니다.이것은 실제로 Google 서버가 요청을 거부하게 만듭니다.브라우저 주소창에 "& sensor= false"를 마지막에 직접 입력하면 잘 로드됩니다.

WordPress track system: http://core.trac.wordpress.org/ticket/9243 에 이런 종류의 버그가 언급되어 있는 것을 보았지만, 그것은 무효라고 기각되었고, 요청에 응답한 관리자는 "&#038" 접근 방식이 이상이 없음을 보여주었습니다.구글의 입장에서는 절대로 문제가 되지 않습니다.

물론 HTML을 스크립트 태그로 에코하는 기능을 얻을 수 있지만, 가능하다면 wp_enqueue_script 시스템을 사용하고 싶습니다.

이것에 대한 해결책을 아는 사람?

건배.

추첨을 하다

우리 코드에 비슷한 것이 있는데 잘 작동하고 있습니다. (심지어 다음과 같이 인코딩됨)&#038문제는 당신이 이미 알고 있는 것처럼 이중 부호화가 진행되고 있다는 것입니다.&. 다음으로 변경하려고 합니다.

$gmaps_url = 'http://maps.googleapis.com/maps/api/js?key=' . $key . '&sensor=false';

우리의 (일하는) 코드는 다음과 같습니다.

wp_register_script('googlemaps', 'http://maps.googleapis.com/maps/api/js?' . $locale . '&key=' . GOOGLE_MAPS_V3_API_KEY . '&sensor=false', false, '3');
wp_enqueue_script('googlemaps');

($locale이 경우는 다음과 같이 설정됩니다.hl=en)

편집

WordPress의 최신 버전에서 동작이 변경된 것 같습니다. 위의 내용은 작동하지 않습니다. 하지만 레거시 버전의 사람들에게 남겨두겠습니다.스크립트를 반향할 수 있는 유일한 대안은 추가하는 것입니다.clean_url필터, 이런 거 말입니다.

add_filter('clean_url', 'so_handle_038', 99, 3);
function so_handle_038($url, $original_url, $_context) {
    if (strstr($url, "googleapis.com") !== false) {
        $url = str_replace("&", "&", $url); // or $url = $original_url
    }

    return $url;
}

꽤 못생겼지만, 그래도 WordPress 종속성 관리를 사용하기 때문에 스크립트를 반향하는 것보다는 약간 더 나을 수 있습니다.

언급URL : https://stackoverflow.com/questions/9504142/loading-google-maps-api-with-wp-enqueue-script

반응형