스크립트 / 스타일 및 종속성의 URL 검색

Aug 16 2020

스크립트 XY와 Z가 주어지면 PHP에서 XYZ 및 종속성 목록을 어떻게 얻을 수 있습니까?

종속성이있는 여러 스크립트를로드해야합니다.

일반적으로 난을 통해이 작업을 수행 할 것입니다 wp_enqueue_script하지만 난 webcomponent의 그림자 DOM에서 이러한 스크립트를로드해야이 상황에서, 그리고에 의존 할 수 wp_headwp_footer내가 JS에서 DOM 요소 나 자신을 구성해야합니다. 이는 스타일 지정을 위해 구성 요소의 내용이 페이지의 나머지 부분과 분리되도록하기위한 것입니다.

답변

2 SallyCJ Aug 16 2020 at 08:05

wp_enqueue_script()그리고 wp_enqueue_style()모두 사용 WP_Dependencies::add()의 새 인스턴스를 초기화 _WP_Dependency합니다 ( wp_scripts()및 wp_styles()), 그래서 모든 스크립트의 의존성은에 저장되어있는 deps클래스 인스턴스의 속성입니다.

그러나 해당 속성 만 저장 핸들 예를 들어, 스크립트의 종속성의 이름 jquery-migratejquery-core(핸들 이름 : 기본 / 핵심 jQuery를 스크립트를 jquery) 너무 종속 파일 (스크립트 / 스타일 시트)의 실제 URL을 얻기 위해, 우리는 사용해야합니다 WP_Dependencies::all_deps()그런 다음 루프를 통해 WP_Dependencies::$to_do종속성 src값 을 가져옵니다 .

// Enqueue a script:
wp_enqueue_script( 'my-script', '/path/to/file.js', [ 'jquery' ] );

// Get all its dependencies:
wp_scripts()->all_deps( 'my-script' );
foreach ( wp_scripts()->to_do as $handle ) {
    $dep = wp_scripts()->registered[ $handle ];
    var_dump( $dep->handle, $dep->src );
    // or do something with $dep->src ... } // Enqueue a style: wp_enqueue_style( 'my-style', '/path/to/file.css', [ 'foo-dep' ] ); // Get all its dependencies: wp_styles()->all_deps( 'my-style' ); foreach ( wp_styles()->to_do as $handle ) {
    $dep = wp_styles()->registered[ $handle ];
    var_dump( $dep->handle, $dep->src );
    // or do something with $dep->src ...
}

참고가 $dep->src수 있습니다 false경우 의존성이 기본 예, 종속성을 포함하고 jquery있다 핸들 jquery-migrate종속성으로합니다. (하지만 걱정하지 마십시오. 종속성은 to_do배열에 있습니다.) 둘째, to_do배열에는 실제 파일도 포함됩니다 (예 : file.js위의 예).