स्क्रिप्ट / शैली और निर्भरता का URL पुनर्प्राप्त करें
स्क्रिप्ट XY और Z को देखते हुए मुझे XYZ के PHP में सूची और उनकी निर्भरता कैसे मिलेगी?
मुझे कई स्क्रिप्ट को लोड करने की आवश्यकता है जिसमें निर्भरताएं हैं।
आम तौर पर मैं के माध्यम से ऐसा होता है wp_enqueue_script
लेकिन इस स्थिति मैं एक webcomponent के लिए एक छाया डोम में इन स्क्रिप्ट लोड करने की जरूरत है, और पर भरोसा नहीं कर सकते wp_head
और wp_footer
मैं डोम तत्वों अपने आप जे एस में निर्माण करने के लिए है। यह इसलिए है ताकि स्टाइल के उद्देश्यों के लिए घटक की सामग्री शेष पृष्ठ से अलग हो जाए।
जवाब
wp_enqueue_script()
और wp_enqueue_style()
दोनों का उपयोग करते हैं, WP_Dependencies::add()जो _WP_Dependency(देखें wp_scripts()और wp_styles()) के एक नए उदाहरण को आरंभ करता है , इसलिए सभी स्क्रिप्ट की निर्भरता deps
वर्ग के उदाहरण की संपत्ति में संग्रहीत की जाती हैं।
हालांकि, उस संपत्ति केवल संग्रहीत करता है संभाल स्क्रिप्ट के निर्भरता, जैसे के नाम jquery-migrate
और jquery-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
के लिए उपरोक्त उदाहरण में।