Komut Dosyası / Stil ve Bağımlılıkların URL'sini Al

Aug 16 2020

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_scriptancak 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_headve wp_footerDOM öğ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

2 SallyCJ Aug 16 2020 at 08:05

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-migrateve jquery-corevarsayı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_dobağımlılığın srcdeğ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->srcbir olabilir falseeğer bağımlılık varsayılan örneğin, bir bağımlılık içeren jquerysahiptir kolu jquery-migratebir bağımlılık olarak. (Ama endişelenmeyin, bağımlılıklar to_dodizide olacaktır.) Ve ikinci olarak, to_dodizi aynı zamanda gerçek dosyayı da içerir, örneğin file.jsyukarıdaki örnekte.