문제

내 플러그인이 특정 페이지에만 스크립트를 등록하도록 하고 싶습니다.

예를 들어, 내 플러그인 파일 안에 다음과 같은 내용을 작성하고 싶습니다.

if (is_page()) {
    $pageid_current = get_the_ID();
    $page_slug = get_post($pageid_current)->post_name;

    if ($page_slug == 'articles'){
        wp_register_script('myscript', '/someurl/main.js');
    }
}

하지만 오류가 발생합니다.

is_page가 잘못 호출되었습니다.쿼리가 실행되기 전에 조건부 쿼리 태그가 작동하지 않습니다.그 전에는 항상 false를 반환했습니다.자세한 내용은 WordPress의 디버깅을 참조하십시오.(이 메시지는 버전 3.1에 추가되었습니다.)

플러그인 내부에서 특정 페이지에 스크립트를 어떻게 등록할 수 있나요?

도움이 되었습니까?

해결책

is_page() 템플릿 파일 내에서만 작동합니다.

그리고 플러그인 파일 내에서 사용하려면 다음과 같은 조합으로 사용해야 합니다. template_redirect 액션훅.

이 액션 후크는 WordPress에서 로드할 템플릿 페이지를 결정하기 직전에 실행됩니다.

따라서 다음 스니펫이 작동합니다.

add_action( 'template_redirect', 'plugin_is_page' );

function plugin_is_page() {
    if ( is_page( 'articles' ) ) {
        wp_register_script( 'my-js-handler', '/someurl/main.js', [], '1.0.0', true );
    }
}

다른 팁

템플릿 리디렉션 후 is_page()를 사용할 수 있으므로 다음과 같이 후크에 추가해야합니다.

add_action('template_redirect','your_function');
function your_function(){
 if ( is_page('test') ) {
  // do you thing.
 }
}
.

어디에서나 작업하도록 원하는 것처럼 등록 스크립트를 입력해야합니다. 다음과 같이 작업이 완료된 후에 등록 할 수 있습니다.

function deregister_my_script() {
    if (!is_page('page-d-exemple') ) {
        wp_deregister_script( 'custom-script-1' );
    }
}
add_action('wp_print_scripts', 'deregister_my_script', 100 );
.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top