it-swarm-ko.tech

계속 페이지 CSS와 JSP로로드 제한 플러그인?

나는 플러그인이 CSS 스타일 시트와 자바 스크립트 JS 파일을 필요한 페이지에만 로딩하도록 제한하고 싶다.

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

<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
Tal Galili

스타일과 스크립트는 wp_enqueue_script()wp_enqueue_style() 함수에 의해 설정되며,이 함수는 작동하기 위해 특정 액션 훅에 연결되어야합니다. 나는 Contact Form 7을 들여다 보았고, action 태그를 wpcf7_enqueue_scriptswpcf7_enqueue_styles로 사용하여 wp_print_scriptswp_print_styles 후크에 추가하는 것처럼 보였다.

따라서, 모든 페이지 but 귀하의 연락처 페이지에서 스크립트 및 스타일의 연결을 해제해야합니다. 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 () function은 true을 반환합니다 (이름이 "저에게 연락"이라고 가정) ... 또한 필터에 페이지 슬러그 및 페이지 ID를 사용할 수 있습니다. 다른 모든 페이지에서 if() 조건은 wp_headwp_print_scripts 작업 직전에 실행되는 wp_print_styles 작업에 스크립트/스타일 제거 기능을 추가합니다.

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

9
EAMann