선택한 페이지에만 CSS와 JS 만로드하도록 플러그인을 제한합니까? Form 7 플러그인 입니다. 그러나 웹 사이트의

플러그인이 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> 

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

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



답변

스타일과 스크립트는 항상 기능 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을 제거해도 테마가 중단되지 않으므로 향후 업그레이드 호환성에 대해 걱정할 필요가 없습니다.