선택한 페이지에만 CSS와 JS 만로드하도록 플러그인을 제한합니까?


9

플러그인이 CSS 스타일 시트 및 JavaScript JS 파일의 로딩을 필요한 페이지로만 제한하도록하고 싶습니다.

내 질문의 예는 내 사이트의 한 페이지 ( " contact me "페이지) 에서 양식을 작성하는 데 사용한 플러그인 Contact Form 7 플러그인 입니다. 그러나 웹 사이트의 모든 페이지 / 게시물에 다음 줄을 추가합니다.

<link rel='stylesheet' id='contact-form-7-css'  href='http://www.r-statistics.com/wp-content/plugins/contact-form-7/styles.css?ver=2.3.1' type='text/css' media='all' /> 

<script type='text/javascript' src='http://www.r-statistics.com/wp-content/plugins/contact-form-7/scripts.js?ver=2.3.1'></script> 

이로 인해이 플러그인이 사이트의 한 페이지에서만 관심있는 확장 프로그램에 대한 사이트 로딩 시간이 손상되고 있다고 의심됩니다.

따라서 제 질문은 "문의하기"페이지를 제외하고 플러그인을 비활성화하지 않고 모든 페이지에서 이러한 추가 라인을 어떻게 제거 할 수 있습니까?

답변:


9

스타일과 스크립트는 항상 기능 wp_enqueue_script()과로 설정되며, 기능 wp_enqueue_style()을 수행하려면 특정 작업 후크에 연결해야합니다. 나는 문의 양식 (7) 내부 들여다했다, 그것은의 액션 태그를 사용하고 것 같습니다 wpcf7_enqueue_scriptswpcf7_enqueue_styles받는 사람을 추가 wp_print_scripts하고 wp_print_styles후크.

따라서 연락처 페이지를 제외한 모든 페이지에서 스크립트와 스타일을 연결 해제해야 합니다. wp_head스크립트와 스타일 행동하기 전에 행동 화재, 그래서 당신은 테마의 functions.php 파일에 이런 식으로 뭔가를 추가해야합니다 :

function remove_wpcf7_extras() {
    remove_action('wp_print_scripts', 'wpcf7_enqueue_scripts');
    remove_action('wp_print_styles', 'wpcf7_enqueue_styles');
}

if( ! is_page('contact me') ) {
    add_action('wp_head', 'remove_wpcf7_extras');
}

is_page () 함수가 반환 true당신이 연락처 페이지에있을 때 (이름을 가정하는 것은 "접촉 나"입니다) ... 당신은 또한 필터의 페이지 슬러그 및 페이지 ID를 사용할 수 있습니다. 다른 모든 페이지에서 if()조건부에서는 스크립트 / 스타일 제거 기능을 wp_head조치에 추가합니다 .이 조치 는 wp_print_scriptswp_print_styles조치 바로 전에 시작 됩니다.

이렇게하면 페이지에서 추가 코드가 제거되므로 플러그인을 비활성화하거나 코어 파일을 편집 할 필요가 없습니다. 위에 나열된 기능과 코드는 나중에 Contact Form 7을 제거해도 테마가 중단되지 않으므로 향후 업그레이드 호환성에 대해 걱정할 필요가 없습니다.


안녕하세요 EAMann. 훌륭한 해결책-감사합니다! 이 방법은 플러그인에 포함되어 어떤 후크가 사용되는지 확인한 다음 누군가가 페이지 위치에 따라 후크를 비활성화 할 수 있다고 생각합니까?
탈 Galili

불행히도 WordPress 내에서 동적으로 사용되는 많은 후크가 있습니다. 따라서 어떤 후크가 사용되고 있는지 확실하게 감지 할 수는 없지만 대부분 이런 방식으로 걸 수 있습니다.
EAMann

멋있는. 당신은 저에게 새로운 질문에 대한 아이디어를주었습니다 : wordpress.stackexchange.com/questions/698/…
Tal Galili

당신도 알다시피, 당신은 나에게이 플러그인을 개발할 아이디어를주었습니다 :-)
EAMann

3
@EAMann 및 @Tal Galili 한이 - 사실 모든 후크의 사용도 동적 것들 캡처 할 수 있습니다 all후크를 볼 wordpress.stackexchange.com/questions/307
MikeSchinkel
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.