style_loader_tag
style_loader_tag는 공식 WordPress API입니다. 문서를 참조하십시오 : https://developer.wordpress.org/reference/hooks/style_loader_tag/
apply_filters( 'style_loader_tag', $html, $handle, $href, $media )
대기열에 포함 된 스타일의 HTML 링크 태그를 필터링합니다.
먼저 스타일 시트를 큐에 넣습니다. 문서를 참조하십시오 : https://developer.wordpress.org/reference/functions/wp_enqueue_style/
wp_enqueue_style( 'font-awesome-5', 'https://use.fontawesome.com/releases/v5.5.0/css/all.css', array(), null );
는 $handle
것입니다 'font-awesome-5'
내가 null
어떤 버전 번호가없는만큼. 이런 식으로 캐시됩니다.
간단한 str_replace
간단한 str_replace는 원하는 것을 달성하기에 충분합니다 (아래 예 참조).
function add_font_awesome_5_cdn_attributes( $html, $handle ) {
if ( 'font-awesome-5' === $handle ) {
return str_replace( "media='all'", "media='all' integrity='sha384-B4dIYHKNBt8Bc12p+WXckhzcICo0wtJAoU8YZTY5qE0Id1GSseTk6S+L3BlXeVIU' crossorigin='anonymous'", $html );
}
return $html;
}
add_filter( 'style_loader_tag', 'add_font_awesome_5_cdn_attributes', 10, 2 );
다른 속성
을 추가 예제 아래에 여러 스타일 시트에 여러 속성을 추가하려면
function add_style_attributes( $html, $handle ) {
if ( 'font-awesome-5' === $handle ) {
return str_replace( "media='all'", "media='all' integrity='sha384-B4dIYHKNBt8Bc12p+WXckhzcICo0wtJAoU8YZTY5qE0Id1GSseTk6S+L3BlXeVIU' crossorigin='anonymous'", $html );
}
if ( 'another-style' === $handle ) {
return str_replace( "media='all'", "media='all' integrity='blajbsf' example", $html );
}
if ( 'bootstrap-css' === $handle ) {
return str_replace( "media='all'", "media='all' integrity='something-different' crossorigin='anonymous'", $html );
}
return $html;
}
add_filter( 'style_loader_tag', 'add_style_attributes', 10, 2 );
모든 스타일에 속성 추가
예제 아래에서 둘 이상의 스타일 시트에 동일한 속성을 추가하려면
function add_attributes_to_all_styles( $html, $handle ) {
// add style handles to the array below
$styles = array(
'font-awesome-5',
'another-style',
'bootstrap-css'
);
foreach ( $styles as $style ) {
if ( $style === $handle ) {
return str_replace( "media='all'", "media='all' integrity='sha384-B4dIYHKNBt8Bc12p+WXckhzcICo0wtJAoU8YZTY5qE0Id1GSseTk6S+L3BlXeVIU' crossorigin='anonymous'", $html );
}
}
return $html;
}
add_filter( 'style_loader_tag', 'add_attributes_to_all_styles', 10, 2 );
script_loader_tag
또한 script_loader_tag 도 설명하고 싶습니다.이 기능도 편리하지만이 API는 wp_enqueue_script 와 함께 작동합니다 .
script_loader_tag API는 거의 동일하며 약간의 차이점 만 있습니다. 설명서를 참조하십시오 : https://developer.wordpress.org/reference/hooks/script_loader_tag/
apply_filters( 'script_loader_tag', $tag, $handle, $src )
큐에 넣은 스크립트의 HTML 스크립트 태그를 필터링합니다.
단일 스크립트를 연기하는 예제 아래
function add_defer_jquery( $tag, $handle ) {
if ( 'jquery' === $handle ) {
return str_replace( "src", "defer src", $tag );
}
return $tag;
}
add_filter( 'script_loader_tag', 'add_defer_jquery', 10, 2 );
하나 이상의 스크립트를 연기하는 예제 아래
function add_defer_attribute( $tag, $handle ) {
// add script handles to the array below
$scripts_to_defer = array(
'jquery',
'jquery-migrate',
'bootstrap-bundle-js'
);
foreach ( $scripts_to_defer as $defer_script ) {
if ( $defer_script === $handle ) {
return str_replace( "src", "defer src", $tag );
}
}
return $tag;
}
add_filter( 'script_loader_tag', 'add_defer_attribute', 10, 2 );
나는 두 API의 설명 그래서 style_loader_tag
및 script_loader_tag
. 그리고 나는 두 API 모두에 대한 몇 가지 예를 들었습니다. 이것이 많은 사람들에게 유용하기를 바랍니다. 두 API 모두에 경험이 있습니다.
업데이트
@CKMacLeod 업데이트 해 주셔서 감사합니다. 우리는 대부분 같은 페이지에 있습니다. 내가 말했듯이, 나는 WordPress 개발자이고 https://wordpress.org 에 테마 및 / 또는 플러그인을 게시 하려면 본질적으로 " WordPress Coding Standards " 를 준수해야 합니다. 테마 및 / 또는 플러그인.
그래서 개발자들이 "워드 프레스 방식"을 사용하도록 권장합니다. 때로는 차이가 없지만 때로는 편리하다는 것을 알고 있습니다. 스스로 말했듯이 Font Awesome을 다운로드하여 테마 및 / 또는 플러그인에 포함시킬 수 있으므로 style_loader_tag 함수를 제거하고 wp_enqueue_style 함수 만 수정하면됩니다.
그리고 마지막으로 (5 년 전) 플러그인을 캐싱, 결합 및 축소하는 것이 효과가 없었으며 대부분 테마를 만든 개발자가 단순히 테마에 머리를 넣은 이유를 알았습니다. 또는 반향을 일으켰습니다. 대부분의 캐싱 플러그인은 (대부분) 스크립트 실행을 결합, 최소화 및 지연하는 옵션을 제공하여 불량 코드를 감지하고 해결하는 데 더 현명하고 나아졌습니다. 그러나 이것은 바람직하지 않습니다. 그렇기 때문에 사람들이 표준 / 컨벤션을 염두에두고 코딩하도록 권장합니다.
개발자는 항상 사람들이 코드로 수행 할 수있는 작업과 호환성을 염두에 두어야합니다. 따라서 쉬운 솔루션이 아니라 최상의 최적의 솔루션을 선택하십시오. 내 견해를 명확히했으면 좋겠다.
@CKMacLeod 편집 (기술적) 토론에 감사드립니다. 이것이 당신 자신의 개발에서 WordPress API를 사용하여 이것이 얼마나 중요한지를 깨닫기를 바랍니다. 다시, 나는 주변을 둘러 보았고 지금도 가장 인기있는 축소 플러그인의 FAQ를 보면 보통이 방법을 볼 수 있습니다.
질문 : 일부 CSS 및 JS 파일이 병합되지 않는 이유는 무엇입니까?
답변 : 플러그인은 공식 WordPress API 메소드 ( https://developer.wordpress.org/themes/basics/include-css-javascript/)
와 동일한 도메인의 파일 (지정하지 않는 한)을 사용하여 대기열에 포함 된 JS 및 CSS 파일 만 처리
합니다. 설정에서).
FAQ를 참조하십시오 : https://wordpress.org/plugins/fast-velocity-minify/