SSL 문제를 다루고 있으며 wp_enqueue_scripts를 통해 출력되는 모든 스크립트 및 스타일에서 도메인을 제거하고 싶습니다. 이로 인해 모든 스크립트와 스타일이 도메인 루트의 상대 경로와 함께 표시됩니다.
필자는 이것을 제출하는 데 사용할 수있는 후크가 있다고 생각하지만 어느 것이, 어떻게 진행 해야할지 잘 모르겠습니다.
답변
Wyck의 답변과 비슷하지만 정규 표현식 대신 str_replace를 사용합니다.
script_loader_src
그리고 style_loader_src
당신이 원하는 고리입니다.
<?php
add_filter( 'script_loader_src', 'wpse47206_src' );
add_filter( 'style_loader_src', 'wpse47206_src' );
function wpse47206_src( $url )
{
if( is_admin() ) return $url;
return str_replace( site_url(), '', $url );
}
이중 슬래시 //
( ” 네트워크 경로 참조 “)로 스크립트 / 스타일 URL을 시작할 수도 있습니다 . 어느 것이 더 안전할까요 (?) : 여전히 전체 경로가 있지만 현재 페이지의 구성표 / 프로토콜을 사용합니다.
<?php
add_filter( 'script_loader_src', 'wpse47206_src' );
add_filter( 'style_loader_src', 'wpse47206_src' );
function wpse47206_src( $url )
{
if( is_admin() ) return $url;
// why pass by reference on count? last arg
return str_replace( array( 'http:', 'https:' ), '', $url, $c=1 );
}
답변
네, 가능하다고 생각합니다. 필터 후크를 참조하십시오 script_loader_src
. 문자열을 얻고 요구 사항에 맞게 필터링 할 수 있습니다.
add_filter( 'script_loader_src', 'fb_filter_script_loader', 1 );
function fb_filter_script_loader( $src ) {
// remove string-part "?ver="
$src = explode( '?ver=', $src );
return $src[0];
}
- 테스트되지 않은 스크래치에 쓰기
스타일 시트의 경우에도 마찬가지입니다 . wp_enqueue_style
필터 를 사용 하여 로드하십시오 style_loader_src
.
답변
루트 테마 에서 얻은 또 다른 방법 은 약간 빈민가이지만 상대 URL을 사용할 때 (dev 사이트에서만 테스트 됨)에 대한 현명한 처리 방법이 있습니다. 장점은 WordPress에서 사용하는 다른 많은 내장 URL에 대한 필터로 사용할 수 있다는 것입니다. 이 예는 스타일 및 스크립트 대기열 필터 만 보여줍니다.
function roots_root_relative_url($input) {
$output = preg_replace_callback(
'!(https?://[^/|"]+)([^"]+)?!',
create_function(
'$matches',
// if full URL is site_url, return a slash for relative root
'if (isset($matches[0]) && $matches[0] === site_url()) { return "/";' .
// if domain is equal to site_url, then make URL relative
'} elseif (isset($matches[0]) && strpos($matches[0], site_url()) !== false) { return $matches[2];' .
// if domain is not equal to site_url, do not make external link relative
'} else { return $matches[0]; };'
),
$input
);
/**
* Fixes an issue when the following is the case:
* site_url() = http://yoursite.com/inc
* home_url() = http://yoursite.com
* WP_CONTENT_DIR = http://yoursite.com/content
* http://codex.wordpress.org/Editing_wp-config.php#Moving_wp-content
*/
$str = "/" . end(explode("/", content_url()));
if (strpos($output, $str) !== false) {
$arrResults = explode( $str, $output );
$output = $str . $arrResults[1];
}
return $output;
if (!is_admin()) {
add_filter('script_loader_src', 'roots_root_relative_url');
add_filter('style_loader_src', 'roots_root_relative_url');
}