wp enqueue style บนเทมเพลตหน้าเฉพาะ


24

ฉันอยู่ในกระบวนการของธีมฉันต้องการเพิ่มหน้า Landing Page โดยใช้เทมเพลตหน้า ฉันไม่พบที่ใดที่แสดงวิธีจัดคิวสไตล์หรือ js สำหรับเทมเพลตหน้าเฉพาะ ข้อเสนอแนะใด ๆ อดีต Landing Page 1 - landing-page-template-one.php จะต้องมีสไตล์และ js แตกต่างจากบล็อกหรือโฮมเพจ

คำตอบ:


29

หากคุณวางแผนที่จะทำการพัฒนา WP จำนวนมากคุณควรบุ๊คมาร์คหน้านี้ไว้: http://codex.wordpress.org/Conditional_Tags

คำตอบอื่น ๆ ใช้งานได้ แต่เงื่อนไขขึ้นอยู่กับทากหน้าของคุณ (myurl.com/this-is-the-slug) ไม่เคยเปลี่ยน วิธีการที่เชื่อถือได้มากขึ้น (IMO) และวิธีที่เหมาะกับกรณีนี้คือใช้การis_page_template('example-template.php')ตรวจสอบตามเงื่อนไขแทน


22

คุณสามารถใช้is_page( 'landing-page-template-one' )เงื่อนไข / ลักษณะเฉพาะของหน้าเป็นส่วนหนึ่งของคำสั่งการเข้าคิวได้

function my_enqueue_stuff() {
  if ( is_page( 'landing-page-template-one' ) ) {
    /** Call landing-page-template-one enqueue */
  } else {
    /** Call regular enqueue */
  }
}
add_action( 'wp_enqueue_scripts', 'my_enqueue_stuff' );

คุณสามารถเชื่อมโยงเพิ่มเติมelseifด้านบนสำหรับหน้าอื่น ๆ ได้อีก

การอ้างอิง: การอ้างอิงฟังก์ชัน -is_page()


คุณยินดีต้อนรับฌอนยินดีช่วยเหลือ
Edward Caissie

2
ฉันคิดว่าการใช้งานis_page_template()เป็นสิ่งที่ดีกว่าเนื่องจากบุ้งหน้านั้นเปลี่ยนแปลงได้ง่าย วิธีการแก้ปัญหานี้ในขณะที่มันทำงานได้ดีจะทำลายถ้ากระสุนได้เปลี่ยน ดูวิธีแก้ปัญหาของ kchjr หากใครเจอปัญหาในอนาคต
BODA82

ขอขอบคุณ! สำหรับคนอื่นที่สะดุดกับสิ่งนี้คำแถลงเงื่อนไขis_pageจะต้องอยู่ในฟังก์ชั่นที่แนบมากับการกระทำและไม่ห่อหุ้มadd_actionคำสั่งนั้นเอง หากคุณใส่add_actionคำสั่งแบบมีเงื่อนไขจะเป็นการเริ่มต้นในการประมวลผลของหน้าเว็บเพื่อให้ทราบว่าเป็นหน้าใด
Hendeca

2

หากเทมเพลตหน้าอยู่ในไดเรกทอรีย่อยของธีม (ตั้งแต่ WP 3.4) ให้ใส่ชื่อโฟลเดอร์และเครื่องหมายสแลชไปที่ชื่อไฟล์เทมเพลตเช่น:

is_page_template( 'templates/about.php' );

ดังนั้นฟังก์ชั่นทั้งหมดจะเป็นดังนี้:

function my_enqueue_stuff() {
  if ( is_page_template( 'landing-page-template-one' ) ) {
    /** Call landing-page-template-one enqueue */
  } else {
    /** Call regular enqueue */
  }
}
add_action( 'wp_enqueue_scripts', 'my_enqueue_stuff' );

เอกสารอ้างอิง: เอกสารอย่างเป็นทางการ


ขอบคุณสำหรับการกล่าวถึงว่าการis_page_template ()ตรวจสอบควรอยู่ในฟังก์ชั่นการเข้าคิวไม่ใช่รอบการตรวจสอบ
gregn3

1

ฉันไม่ทราบว่าคำตอบที่ให้ไว้ในคำตอบอื่น ๆ เคยใช้งานได้หรือไม่ แต่ (เนื่องจากไม่มีคำตอบที่ยอมรับได้!) ดูเหมือนว่าคำตอบที่ถูกต้องในปัจจุบันคือ:

function my_enqueue_stuff() {
    if ( get_page_template_slug() == 'landing-page-template-one.php' ) {
        wp_enqueue_script('my-script-handle', 'script-path.js', ... );
    }
}
add_action( 'wp_enqueue_scripts', 'my_enqueue_stuff' );

is_page_template () ทำงานเฉพาะนอกวงตามhttps://developer.wordpress.org/reference/functions/is_page_template/



นอกวง นั่นคือสิ่งที่ฉันพูด ... * อาย *
richplane

1

สมมติว่าชื่อเทมเพลตของคุณเป็นอารมณ์และคุณต้องการโหลด bootstrap บนหน้านั้นเพื่อให้คุณสามารถจัดคิวสไตล์ในเทมเพลตหน้าเฉพาะเช่นนี้:

ไปที่ไฟล์function.phpจากนั้นตรวจสอบเงื่อนไขเช่นนี้:

function temper_scripts() {

    if(basename(get_page_template()) == 'temper.php'){

       wp_enqueue_style('bootstrap', '//stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css');

    }

}

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