플러그인 내에서 is_page()를 어떻게 사용할 수 있나요?
-
23-12-2019 - |
문제
내 플러그인이 특정 페이지에만 스크립트를 등록하도록 하고 싶습니다.
예를 들어, 내 플러그인 파일 안에 다음과 같은 내용을 작성하고 싶습니다.
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 );
. 제휴하지 않습니다 StackOverflow