Komut Dosyası / Stil ve Bağımlılıkların URL'sini Al
XY ve Z komut dosyası verildiğinde, XYZ'nin PHP'deki listesini ve bunların bağımlılıklarını nasıl elde ederim?
Bağımlılıkları olan birkaç komut dosyası yüklemem gerekiyor.
Normalde bunu yoluyla yapardım, wp_enqueue_script
ancak bu durumda bu komut dosyalarını bir web bileşeni için bir gölge DOM'a yüklemem gerekiyor ve buna güvenemem wp_head
ve wp_footer
DOM öğelerini JS'de kendim oluşturmam gerekiyor. Bu, stil oluşturma amacıyla bileşenin içeriğinin sayfanın geri kalanından izole edilmesi içindir.
Yanıtlar
wp_enqueue_script()
ve wp_enqueue_style()
her ikisi de (see ve ) ' WP_Dependencies::add()nin yeni bir örneğini başlatan kullanır , bu nedenle komut dosyasının tüm bağımlılıkları sınıf örneğinin özelliğinde depolanır ._WP_Dependencywp_scripts()wp_styles()deps
Bununla birlikte, bu özellik yalnızca komut dosyasının bağımlılıklarının tutamaç adlarını depolar , örneğin jquery-migrate
ve jquery-core
varsayılan / çekirdek jQuery betiği (tanıtıcı adı:) için jquery
, bu nedenle bir bağımlılık dosyasının (betik / stil sayfası) gerçek URL'sini almak için kullanmamız gerekir. WP_Dependencies::all_deps()ve sonra WP_Dependencies::$to_do
bağımlılığın src
değerini almak için döngü yapın :
// 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 ...
}
Not olduğu $dep->src
bir olabilir false
eğer bağımlılık varsayılan örneğin, bir bağımlılık içeren jquery
sahiptir kolu jquery-migrate
bir bağımlılık olarak. (Ama endişelenmeyin, bağımlılıklar to_do
dizide olacaktır.) Ve ikinci olarak, to_do
dizi aynı zamanda gerçek dosyayı da içerir, örneğin file.js
yukarıdaki örnekte.