คำตอบเบื้องต้นที่ดีมากที่นี่
โดยทั่วไปget_template_part()
จะช่วยให้นักพัฒนาชุดรูปแบบสามารถตั้งค่าลำดับของไฟล์เทมเพลตได้ คิดว่ามันคล้ายกับความจำเพาะตามที่ใช้กับตัวเลือก CSS เมื่อออกแบบบางอย่างคุณต้องการเริ่มต้นด้วยความเจาะจงน้อยที่สุดเพื่อให้สามารถเขียนทับได้ง่ายในส่วนของการออกแบบที่ต้องการความสนใจเป็นรายบุคคล
ตัวอย่างเช่นคุณกำลังจัดแต่งทรงผมในบล็อกและคุณสร้างไฟล์loop.phpซึ่งทำงานได้ดีในการทำเครื่องหมายโพสต์ แต่คุณวางแผนล่วงหน้าและคุณเรียกมันในไฟล์เทมเพลตของคุณในภายหลังพร้อมกับตัวระบุบริบทเพิ่มเติม - เช่นในหน้าดัชนีคุณโทรหาget_template_part( 'loop', 'index' );
ในเทมเพลตเดียวคุณโทรหาget_template_part( 'loop', 'single' );
ในหน้าเก็บถาวรคุณโทรget_template_part( 'loop', 'archive' );
และอื่น ๆ นี้จะทำให้มันง่ายไปลงที่ถนนเมื่อคุณตัดสินใจที่จะทำเครื่องหมายห่วงเก็บบนหน้าเว็บของคุณแตกต่างจากหน้าแรก: เพียงแค่สร้างห่วง archive.phpแม่แบบและมันจะถูกนำมาใช้มากกว่าทั่วไปloop.php
แต่เวทย์มนตร์ที่อยู่เบื้องหลังget_template_part()
นั้นอยู่ในฟังก์ชั่นlocate_template()
ซึ่งจะตรวจสอบไดเรกทอรีธีมก่อนจากนั้นไดเรกทอรีหลัก (ถ้ามี) สำหรับไฟล์ที่มีชื่อ สิ่งนี้มีประโยชน์มากสำหรับการพัฒนาปลั๊กอิน หนึ่งในปลั๊กอินของฉันฉันกำหนดประเภทโพสต์ที่กำหนดเองและสร้างไฟล์เทมเพลตลูปสำหรับประเภทโพสต์ที่กำหนดเองนั้นในไดเรกทอรีปลั๊กอินของฉัน แต่ ... ฉันต้องการอนุญาตให้ใช้ธีมโดยใช้ปลั๊กอินเพื่อแทนที่มาร์กอัปของฉันหากพวกเขาเลือก นี่คือสิ่งที่ใช้locate_template()
งานได้จริงมหัศจรรย์
locate_template($template_names, $load = false, $require_once = true )
จะค้นหาชื่อแต่ละชื่อในอาร์เรย์ $ template_names ในไดเรกทอรีสไตล์ชีทจากนั้นในไดเรกทอรีเทมเพลต ผ่าน 'true' เป็นอาร์กิวเมนต์ $ load หมายความว่าจะต้องพบไฟล์แรกและจะส่งคืนสตริงว่างถ้าไม่มีไฟล์เทมเพลต ดังนั้นฉันสามารถทำสิ่งนี้ในปลั๊กอินของฉัน:
if ( '' === locate_template( 'loop-mycustomposttype.php', true, false ) )
include( 'loop-mycustomposttype.php' );
... ซึ่งหวังว่าจะทำให้มันง่ายมากสำหรับผู้พัฒนาธีมในการปรับแต่งปลั๊กอินของฉันโดยเพียงแค่รวมไฟล์ที่เรียกว่าloop-mycustomposttype.phpในธีมของพวกเขา