Truy xuất URL của Tập lệnh / Kiểu và Sự phụ thuộc
Với script XY và Z, làm cách nào để lấy danh sách trong PHP của XYZ và các phụ thuộc của chúng?
Tôi cần tải một số tập lệnh có phụ thuộc.
Thông thường tôi sẽ làm điều này thông qua wp_enqueue_script
nhưng trong tình huống này, tôi cần tải các tập lệnh này trong DOM bóng cho một thành phần web và không thể dựa vào wp_head
và wp_footer
, tôi phải tự tạo các phần tử DOM trong JS. Điều này là để nội dung của thành phần được tách biệt với phần còn lại của trang cho mục đích tạo kiểu.
Trả lời
wp_enqueue_script()
và wp_enqueue_style()
cả hai đều sử dụng WP_Dependencies::add()để khởi tạo một thể hiện mới của _WP_Dependency(xem wp_scripts()và wp_styles()), vì vậy tất cả các phụ thuộc của tập lệnh được lưu trữ trong thuộc deps
tính của thể hiện lớp.
Tuy nhiên, thuộc tính đó chỉ lưu trữ tên xử lý của các phần phụ thuộc của tập lệnh, ví dụ: jquery-migrate
và jquery-core
cho tập lệnh jQuery mặc định / lõi (tên xử lý jquery
:), vì vậy, để lấy URL thực của tệp phụ thuộc (tập lệnh / biểu định kiểu), chúng ta sẽ cần sử dụng WP_Dependencies::all_deps()và sau đó lặp WP_Dependencies::$to_do
lại để nhận src
giá trị của phụ thuộc :
// 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 ...
}
Lưu ý rằng $dep->src
có thể là a false
nếu phần phụ thuộc chứa một phụ thuộc, ví dụ: jquery
xử lý mặc định có jquery-migrate
như một phụ thuộc. (Nhưng đừng lo lắng, các phụ thuộc sẽ nằm trong to_do
mảng.) Và thứ hai, to_do
mảng cũng bao gồm tệp thực, ví dụ như file.js
trong ví dụ trên.