wp_enqueue_script () 대 wp_enqueue_script ()와 함께 wp_register_script ()를 언제 사용해야합니까?


54

를 사용해야 할 때 이해하는 데 문제가 있습니다 wp_register_script(). 현재는 다음과 같은 것을 사용합니다.

add_action( 'admin_enqueue_scripts', array( $this, 'enqueue' ) );
function enqueue() {
    $handle = 'some-handle';
    $js = 'http://example.com/my.js';
    wp_register_script( $handle, $js );
    wp_enqueue_script( $handle );
}

나는 많은 독서 (Codex, 블로그 등)를했지만 처음 등록해야 할 때 또는 대기열에 넣을 때를 이해할 수는 없습니다. 예를 들어, TwentyTwelve 가 어떤 스타일이나 스크립트를 등록하지 않는 것을 발견 했습니다.

답변:


49

wp_register_script()코덱스 페이지를 그대로 말한다 :

나중에 사용할 수 있도록 WordPress에 자바 스크립트를 등록하는 안전한 방법입니다 wp_enqueue_script().

즉, 스크립트를 등록하려고하지만 페이지에 직접로드하지 않으려면 파일을 한 번 등록한 다음 필요할 때로드 할 수 있습니다.

예를 들면 다음과 같습니다.

switch 문은 일부 기능을로드하지만 세 가지 경우 중 두 가지에는 특정 자바 스크립트 파일이 필요하지만 하나는 그렇지 않습니다. 매번 스크립트를 대기열에 추가하거나 더 많은 리소스를 소비하거나 필요할 때 스크립트를 대기열에 넣을 수 있습니다.

...
wp_register_script( 'my-handy-javascript', ... );
...
switch( $somevar ) {
    case 'value':
        wp_enqueue_script( 'my-handy-javascript' ); // needs the file
        ...
    break;
    case 'value2':
        wp_enqueue_script( 'my-handy-javascript' ); // needs the file
        ...
    break;
    default:
    case 'value3': // doesn't needs the file
        ...
    break;
}

스크립트를 등록한 다음 대기열에 넣을 필요는 없지만 코드 functions.php의 어느 곳에서나 필요한 위치에 필요한 모든 스크립트를 등록하면 코드에 논리를 제공 할 수 있습니다 .

코덱스는 또한 다음을 알려줍니다.

wp_enqueue_scripts조치를 사용 하여이 기능 admin_enqueue_scripts을 호출 하거나 관리자 측에서 호출하십시오.

즉, frond-end 백엔드 에서 스크립트를 대기열에 넣으려면 스크립트를 한 번 등록한 다음로 프론트 엔드 wp_enqueue_script및 백엔드로 스크립트를로드 할 수 있습니다 admin_enqueue_script.
이 방법으로 하나의 테마, 플러그인, 위젯 등에서 동일한 대기열에 두 번의 답변이 없습니다.


감사합니다. 그것은 그것을 많이 정리했습니다. 그래서 TwentyTwelve가 확실히로드하기 때문에 먼저 등록하는 것을 귀찮게 생각하지 않습니까?
akTed

그 가능성은 확실 할 수 있습니다. 나는 결코 그것을 사용하지 않았기 때문에 Twenty Twelve 테마가 어떻게 구축되는지 모르겠지만, 그들은 enqueue대신에 이유가있을 것 입니다 register.
Mike Madern

2
그런 의미에서 "매번 스크립트를 대기열에 추가하거나 더 많은 리소스를 소비하거나 필요할 때 스크립트를 대기열에 넣을 수 있습니다"에 동의하지 않습니다. 귀하의 예제 코드에서는 레지스터 호출을 제거하고 대신 여러 가질 수있다 상당 ($의 SRC의 인수와 함께) 본격적인가 호출합니다 wp_enqueue_style(). 이것은 더 많은 타이핑 노력이 필요하지만 더 큰 자원 요구 사항을 초래 하지는 않습니다 . 옳은?
Jan-Philip Gehrcke

7
지금까지 모든 설명에서 제외 된 한 가지 점 wp_register_script()은 스크립트를 등록하는 데 사용할 수 있으므로 다른 스크립트에 대한 종속성으로 사용될 수 있으며 직접 큐에 넣지 않고도 스크립트와 함께로드 할 수 있다는 것입니다.
JHoffmann

1
이것이 잘 설명되어 있지만이 답변 을 읽는 것이 좋습니다 .
lowtechsun

8

wp_register_script이전 에 사용했을 때의 주요 이점은 Codexwp_enqueue_scripts 의 다음 단락에 설명되어 있습니다 .

wp_register_script ()를 사용하여 사전 등록 된 스크립트는 대기중인 다른 스크립트의 종속성으로 나열되는 경우 wp_enqueue_script ()를 사용하여 수동으로 큐에 넣을 필요가 없습니다. WordPress는 등록 된 스크립트의 핸들을 종속성으로 나열하는 대기열에 포함 된 스크립트를 포함하기 전에 등록 된 스크립트를 자동으로 포함합니다.

이것이 필요하지 않다고 생각한다면 (예를 들어 스크립트가 의존성에 관여하지 않는다는 것을 100 % 확신하기 때문에) wp_enqueue_scripts예비없이 직접 사용할 수 있습니다 wp_register_script.


1

몇 가지 기사를 살펴보고 다음 결론에 도달했습니다. 도움이 될 것 같습니다.

  1. wp_register_script ()를 사용하여 스크립트를 등록하는 것은 등록하는 중입니다. 로드하지 않습니다. 등록 된 스크립트는 wp_enqueue_script ()를 사용하여 큐에 넣을 때까지로드되지 않습니다.
  2. 각 스크립트를 동시에 등록하고 대기열에 넣을 필요는 없습니다. 우리는 그냥 대기열에 넣어야합니다. wp_enqueue_script () 함수가 자동으로 스크립트를 등록하므로 등록은 필수가 아닙니다.
  3. 그러나 다음과 같은 상황에서는 등록해야합니다.

에이. 프론트 엔드에서 한 번, 백엔드에서 한 번 (관리자 페이지)과 같이 둘 이상의 위치에로드하는 스크립트가 필요하다고 가정하십시오. 이제 스크립트를 한 번만 등록 할 수 있습니다. 그런 다음 프런트 엔드 및 백엔드에서 개별적으로 큐에 넣습니다. 봐봐, 큐잉은 로딩을 의미한다. 등록한다고해서 로딩되는 것은 아닙니다. 등록하지 않으면 대기열에 넣은 횟수만큼 자동으로 등록됩니다. 반면에 한 번 등록하면 몇 번이나 큐에 넣더라도 등록됩니다.

비. 스크립트를 다른 스크립트의 종속성으로 사용하려면 wp_enqueue_script ()를 사용하여 스크립트를 대기열에 넣을 필요가 없습니다. wp_register_script ()로 등록하십시오. 그리고 핸들 이름을 wp_enqueue_script ()로 대기열에 넣은 다른 스크립트의 종속성으로 사용할 때 자동으로 대기열에 추가됩니다.

씨. 필요할 때 한 번에로드하지 않고 스크립트를로드하려면 나중에 사용하기 위해 스크립트를 등록하면됩니다. 사용 사례는 위에 나와 있습니다.

NB 내가 확신하는 한, CSS 스타일 시트에 대해 동일한 결론을 도출 할 수 있습니다. wp_register_style ()과 wp_enqueue_style ()을 같은 방식으로 사용할 수 있다고 말하고 싶습니다.

여기에 그려진 결론은 내 자신의 공제를 반영합니다. 내가 틀렸다면 정정 해주세요. 그리고 당신은 다른 훨씬 더 나은 결론에 도달했을 수 있습니다. 그렇다면 문제를 알려주십시오. 누가 알아? 아마도 당신이 최고 일 것입니다. 말씀대로“많은 교리와 마찬가지로 많은 방법으로 구원을 얻을 수 있습니다.”:)

https://sxbook.blogspot.com/2018/12/wpregisterscript-when-to-use.html

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.