스크립트 및 스타일을 등록 / 큐에 넣을 수있는 올바른 장소는 어디입니까


43

지금까지 WordPress 3.1.4를 사용하고 있습니다. 나는 어디에서 어느 후크를 사용하는지 혼동됩니다.

  • 등록 및 / 또는 대기
  • 스크립트와 스타일
  • 프론트 엔드와 백엔드에서?

질문 :

  • 올바른 후크는 무엇입니까?
  • 모든 프론트 엔드 레지스터 / 대기열 스크립트 / 스타일 init?
  • admin_print_styles-{xxx}없습니까?

답변:


62

등록 및 큐잉이 중요한 이유

  • 스크립트 / 스타일이 페이지로 출력되기 전에 시간이 지났 어야합니다 . 그렇지 않으면 너무 늦습니다.

  • 조건부 여야합니다. 그렇지 않으면 필요하지 않은 곳에로드하고 성능 및 기능 문제를 일으킬 수 있습니다.이를 위해서는 WP 환경이 후기에로드되어야합니다.

프로세스의 세 단계

  1. register- 스크립트 / 스타일에 대한 WP 세부 사항을 설명하고 해당 정보를 저장합니다.

  2. enqueue- (종종 한 번의 wp_enqueue_*()호출 로 레지스터와 함께 묶음 )-WP가 설정 (종속성, 머리글 / 바닥 글로드)에 따라 대기열에 스크립트 / 스타일을 추가하도록 지시합니다.

  3. 인쇄 자체, WP는 큐를 처리 할 때 이런 일이 발생 부하 뭔가 특정하려고를 - 또는 명시 적으로 함께 할 때 wp_print_*()기능.

함수와 후크의 프론트 엔드 구조

  • wp_head()

    • wp_head

      • (1) wp_enqueue_scripts()

        wp_enqueue_scripts «이것이 당신이 필요로하는 것입니다

      • (8) wp_print_styles()

      • (9) wp_print_head_scripts()

  • wp_footer()

    • wp_footer

      • (10) wp_print_footer_scripts()

훨씬 깊어 지지만 이것은 중요한 점에 대해 간단하고 충분합니다.

  • wp_enqueue_scripts프론트 엔드에서 스크립트와 스타일을 등록하고 대기열에 넣는 데 가장 적합한 훅 입니다.

  • init이것과는 아무런 관련이 없으며 작동하지만 과거 코덱스 권장 사항 만 사용하는 것이 잘못되었습니다 .

  • wp_print_footer_scripts()통화 하기 전에 언제든지 바닥 글에 대한 대기 스크립트 (스타일 아님)를 사용하여 벗어날 수 있습니다 .

  • wp_print_*후크는 register / queue에 적합하지 않으며 출력이 이미 발생했을 때 코드의 포인트입니다. 수동 / 사용자 정의 스크립트 / 스타일 출력에 적합합니다.

관리자는 어떻습니까?

글쎄, 기능은 더욱 복잡하고 정교하며 중첩되어 있습니다.

  • 우선가 바로 사용 admin_enqueue_scripts (이 전달되는 $hook_suffix조건의 물건 글로벌 모든 것을), 대부분의 경우에 잘 할 것;

  • 복잡한 무언가가 필요할 때- admin-header.php적절한 고리를 찾으십시오 .

로그인은 어떻습니까?

라는 특정 후크가 login_enqueue_scripts있습니다.


다른 질문에 대한 또 다른 대답 에서 나는 추천되었다 admin_print_scripts-{xxx}. 나는 그것이 admin_print_scripts호출되었지만 -{xxx}예 를 들어서는 안된다는 것을 알았습니다 . -edit.php예를 들어. 대기열에 넣는 것에 대한 대답이 옳고 그 admin_print_scripts-xxx대신에 권장하는 것이 무엇입니까? 사용자 지정 게시물 유형 추가 / 편집 페이지 (메타 박스 용)에 스크립트 / 스타일을 포함시키고 싶다고 가정합니다.
JM at Work

5
@JM at Work 위의 개인적인 견해- *print*필요한 이유를 정말로 알지 않는 한 갈고리를 피하십시오. 그리고 전체적으로 대기열이 아닌 인쇄용 입니다. 후크는 동적 후크에 사용 된 것과 동일한 변수를 전달 합니다. admin_enqueue_scripts$hook_suffix
Rarst

$hook_suffix내 포트폴리오 편집 페이지에서 post.php처럼 보이는 이유는 무엇입니까? 나는 그것이 edit.php라고 생각했는데 포트폴리오를 편집 / 게시하고 일반 게시물이 아닌지 어떻게 알 수 있습니까?
JM at Work

@JM at Works 솔직히 변수는 다소 불쾌합니다 :) 자체 플러그인에서는 처리하기가 더 쉽지만 ( add_*_page()함수의 반환 ) 네이티브 WP 화면에서는 다를 수 있습니다.
Rarst

불행히도 후크를 wp_footer에서 wp_enqueue_scripts 또는 admin_print_scripts로 변경하면 CSS가 사라지고 소스 코드의 어느 곳에도 나타나지 않습니다. 이것은 내가 사용하는 코드입니다. add_action ( 'wp_enqueue_scripts', 'addCSS'); 작동하지 않습니다. 작동합니다. add_action ( 'wp_enqueue_scripts', 'addCSS'); 제외하고는 분명히 바닥 글에 CSS를 추가합니다. 내가 무엇을 잘못하고 있지?
Talon
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.