ฉันจะได้รับ $ handle สำหรับสคริปต์ที่จัดคิวทั้งหมดได้อย่างไร


18

มีวิธีใดบ้างในการรับ $ handle สำหรับแต่ละสคริปต์ที่ถูกจัดคิวไว้?

มีอาร์เรย์บางอย่างที่มีที่จับทั้งหมดเพื่อให้ฉันสามารถวนรอบมันและทำบางสิ่งโดยใช้การจัดการ $ แต่ละหรือไม่

คำตอบ:


25

$wp_scriptsทั่วโลกเก็บข้อมูลทั้งหมดสคริปต์:

function wpa54064_inspect_scripts() {
    global $wp_scripts;
    foreach( $wp_scripts->queue as $handle ) :
        echo $handle;
    endforeach;
}
add_action( 'wp_print_scripts', 'wpa54064_inspect_scripts' );

5
ในฐานะของ WP 4.2.0 - $wp_scripts = wp_scripts();อาจจะดีกว่าการเข้าถึงโลกโดยตรงเพราะมันจะเริ่มต้น$wp_scriptsหากยังไม่ได้ตั้งค่า
jgraup

คุณควรเพิ่มลำดับความสำคัญ,9999เช่นadd_action( 'wp_print_scripts', wpa54064_inspect_scripts', 9999 );มิฉะนั้นคุณจะเห็นสคริปต์ที่ถูก dequeued โดยไฟล์ functions.php
Ryszard Jędraszyk

2

มีวิธีใดบ้างในการรับ $ handle สำหรับแต่ละสคริปต์ที่ถูกจัดคิวไว้?

คุณสามารถลองตรวจสอบ$wp_scripts->queueที่ hook ที่ระบุได้ แต่จะไม่ให้รายการของการจัดการทั้งหมดที่ WordPress ใช้เชื่อหรือไม่

ตัวอย่างเช่นคุณสามารถเชื่อมโยงwp_headซึ่งเรียกใช้wp_print_scriptsการดำเนินการเพื่อรับรายการ$handlesธีมยี่สิบหุ้นใน WP v4.7.5:

function get_enqueued_scripts () {
    $scripts = wp_scripts();
    var_dump( array_keys( $scripts->groups ) );
}

add_action( 'wp_head', 'get_enqueued_scripts' );

และรายการ$handlesจาก$wp_scripts->groupsจะ:

ป้อนคำอธิบายรูปภาพที่นี่

ณ จุดนี้หากคุณจะเปรียบเทียบสิ่งที่มีอยู่ใน$wp_scripts->queueคุณจะเห็นเพียงส่วนย่อยของด้านบน

ดังนั้นแม้wp_print_scripts จะไม่ได้จัดเตรียมรายการของการจัดการตามที่แสดงไว้ด้านบนหากเป็นสิ่งที่คุณต้องการ และเป็นไปไม่ได้ที่จะพึ่งพาการพึ่งพาแบบกลุ่มเพื่อให้ได้มาซึ่งกัน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.