get_template_part กับตะขอแอ็คชั่นในธีม


15

ดูเหมือนว่าทั้งสองสิ่งนี้เป็นโอกาสของผู้ใช้ในการปรับเปลี่ยนธีมโดยไม่ต้องแก้ไขไฟล์ธีม (ผ่านธีมลูก)

คำถามของฉันคือเป็นวิธีหนึ่งที่ต้องการมากกว่าอีกวิธีหนึ่ง

เช่นใช้ชุดรูปแบบฉัน workig ในตอนนี้ ฉันพยายามที่จะตัดสินใจว่าจะไปกับส่วนแม่แบบของ hooks

<?php get_template_part('before_sitecontainer' ); ?>
<div id="sitecontainer" class="sitecontainer" <?php //closed in footer ?>>

<?php get_template_part( 'before_topcontainer' ); ?>
<div id="topcontainer ">

    <?php get_template_part( 'before_topedge_navigation' ); ?>
    <?php get_template_part( 'topedge_navigation' ); ?>

    <?php get_template_part( 'before_site_header' ); ?>
    <?php get_template_part( 'site_header' ); ?>

    <?php get_template_part( 'before_second_navigation' ); ?>
    <?php get_template_part( 'second_navigation' ); ?>

    <?php get_template_part( 'after_second_navigation' ); ?>

</div><!-- end topcontainer div -->
<?php get_template_part( 'after_topcontainer' ); ?>

ด้านบนอนุญาตให้ผู้ใช้ของธีมแทนที่ส่วนใด ๆ ของรหัสที่มีอยู่โดยเพียงแค่สร้างไฟล์ชื่อ appropiately ในโฟลเดอร์ธีมลูกของพวกเขาเช่นเดียวกับการเพิ่มรหัสใหม่ก่อน / หลังแต่ละส่วนที่มีอยู่ก่อนด้วยวิธีเดียวกัน - ก่อน / หลังแม่แบบ ไฟล์ส่วนหนึ่งไม่มีอยู่ในธีมหลักเลยและมีเพียงเพื่ออนุญาตให้พวกเขาใส่รหัส - และวิธีการนี้ไม่ต้องการให้พวกเขาเข้าใจ hooks / ตัวกรองเพื่อทำสิ่งนี้ให้สำเร็จ

แน่นอนฉันสามารถใช้ hooks และตัวกรองเดียวกันได้

มีข้อได้เปรียบในการใช้ hooks / ฟิลเตอร์แทนหรือไม่? โปรดจำไว้ว่าผู้ชมเป้าหมายที่จะใช้สิ่งนี้คือรหัสที่ไม่เข้าใจ ฉันสามารถให้คำแนะนำพื้นฐานแก่พวกเขาที่พวกเขาสามารถปฏิบัติตามเพื่อใช้วิธีการของแม่แบบ แต่เกือบจะทำให้ปีศาจสับสนด้วยตะขอ

หรือมีสถานการณ์ที่หนึ่งจะดีกว่าอีกในรูปแบบเดียวกันหรือไม่

คำตอบ:


8

ฉันชอบ hooks เนื่องจากมีความยืดหยุ่นมากกว่า: คุณสามารถเชื่อมโยงพวกเขาจากfunctions.phpไฟล์ของธีมของคุณแต่ยังมาจากปลั๊กอิน ฉันพยายามใส่ตรรกะในปลั๊กอินมาก ๆ เพื่อให้ธีมมีเนื้อหาส่วนใหญ่เป็นเค้าโครง

ถ้าคุณใช้เบ็ดการกระทำก็ยังคงเป็นไปได้ที่จะใช้ในการจัดการเบ็ดที่get_template_part() สิ่งนี้จะช่วยให้คุณได้สิ่งที่ดีที่สุดทั้งสองโลก คุณอาจสร้างเบ็ดเริ่มต้นที่เรียกget_template_part()เพื่อให้คนที่ไม่มีประสบการณ์มากในการเขียนโปรแกรมสามารถเพิ่มไฟล์พิเศษและคนอื่น ๆ สามารถเอาเบ็ดนี้ออกหากพวกเขาไม่ต้องการ

เกี่ยวกับประสิทธิภาพ: get_template_part()ใช้ ( ในlocate_template() ) file_exists()หนึ่งสองหรือสี่ครั้ง (ขึ้นอยู่กับวิธีที่คุณเรียก) มันปรากฏขึ้นfile_exists()อย่างรวดเร็วและใช้แคชใน PHPและอาจจะอยู่ในระบบปฏิบัติการ นั่นอาจไม่ใช่ปัญหา


นั่นทำให้รู้สึก ส่วนหนึ่งของแรงผลักดันการออกแบบของฉันคือการขจัดความต้องการปลั๊กอินในสถานการณ์การใช้งานทั่วไปส่วนใหญ่ในขณะที่ยังคงรักษาความสามารถในการใช้งานได้กับสิ่งที่ต้องการ ลูกค้าเป้าหมายของฉันรู้น้อยมากเกี่ยวกับ WordPress หรือปลั๊กอินไม่มีคุณสมบัติในการบอกปลั๊กอินที่ดีจากจุดอ่อน (จุดอ่อนที่สำคัญของปลั๊กอิน IMO) และไม่ต้องการจัดการกับการอัปเดตและจัดการซอฟต์แวร์หลายชิ้น ดังนั้นฉันจึงต้องสร้างฟังก์ชั่นมากมายในชุดรูปแบบเพื่อส่งมอบสิ่งที่พวกเขาต้องการ: ใช้งานง่ายง่ายต่อการบำรุงรักษาโซลูชั่นครบวงจร
แอชลีย์จี

4

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


1
ใช่มันสมเหตุสมผลแล้วและเป็นส่วนหนึ่งของสิ่งที่ฉันพยายามจะทำด้วยโค้ดตัวอย่าง
แอชลีย์จี

4

มันค่อนข้างง่ายต่อการลบฟังก์ชั่นออกจาก hook ในธีมลูก แต่ยากกว่ามากที่จะทำให้มันไม่สนใจแม่แบบที่ไม่ต้องการ

โดยพื้นฐานแล้วการทำงานกับ hooks จะอยู่ใกล้กับ PHP มากขึ้นและการทำงานกับแม่แบบนั้นจะใกล้เคียงกับ HTML มากขึ้น ฉันใช้ธีมผู้ปกครองไฮบริดซึ่งเน้นไปที่ตะขอมาก มันเป็นความสุขที่ถูกต้องจนกว่าคุณจะต้องกำจัดแม่แบบของผู้ปกครอง

สำหรับผู้ใช้ที่ไม่เข้าใจเทคโนโลยีไม่เป็นตัวเลือกที่ดีมาก ทำไมพวกเขาต้องยุ่งกับชุดรูปแบบเช่นนี้หรือไม่?

PS บันทึกปัญหาประสิทธิภาพการทำงานด้วยเช่นกัน สิ่งที่มี hooks เกิดขึ้นในหน่วยความจำสิ่งที่มีแม่แบบนั้นจะค้นหาดิสก์จำนวนมาก โดยเฉพาะอย่างยิ่งถ้าคุณกำลังเขียนบางอย่างเช่นในตัวอย่างของคุณ

PPS ไม่ใช่การตั้งค่าของทุกคน ... แต่แทนที่จะเขียนธีมหลักตั้งแต่เริ่มต้นทำไมไม่ใช้ธีมหลักที่มีอยู่แล้วนำเสนอธีมลูกง่ายต่อผู้ใช้


การเพิกเฉยแม่แบบแม่แบบนั้นง่ายพอ ๆ กับการสร้างไฟล์เทมเพลตเปล่าเพื่อแทนที่มันฉันจะคิด ง่ายกว่า messing กับ hooks (และดังนั้น PHP) สำหรับผู้ใช้ที่ไม่เข้าใจเทคโนโลยี แม้ว่าสำหรับคนที่มีตะขอเกี่ยวประสบการณ์จะง่ายกว่ามาก ทำไมถึงมีผู้ที่ต้องการปรับแต่งเสมอคุณยังยอมรับว่าคุณทำ สำหรับสาเหตุที่ฉันสร้างธีมนั่นคือทิศทางที่ฉันต้องการนำธุรกิจของฉันการสร้างธุรกิจอื่น ๆ นั้นไม่ได้เป็นข้อพิสูจน์ในอนาคตสำหรับฉันเช่นกันเนื่องจาก IMO ธีมที่มีอยู่ส่วนใหญ่ไม่ต้องการ ฉันคิดว่าฉันสามารถทำได้ดีกว่า
Ashley G

จุดดีเกี่ยวกับปัญหาเรื่องประสิทธิภาพ แม้ว่าในขณะที่ wordpress ถูกออกแบบมาเพื่อทำงานกับ get_template_part ฉันคิดว่าคงไม่เป็นเรื่องที่น่าประทับใจเท่าไหร่ ใครมีเกณฑ์มาตรฐานในเรื่องนี้?
แอชลีย์จี

ฉันเห็นสิ่งที่คุณหมายถึงเกี่ยวกับการละเว้นส่วนแม่แบบ ไม่ง่ายอย่างที่คิด
แอชลีย์จี

จริงๆแล้วมันง่ายเหมือนการวางไฟล์เทมเพลตเปล่าไว้ในโฟลเดอร์ child โดยระบุไว้ในรูทของโฟลเดอร์ ที่ใดที่ยากก็คือเมื่อไฟล์เทมเพลตอยู่ในโฟลเดอร์ย่อยของโฟลเดอร์ธีมหลัก / ลูก
Ashley G

ที่จริงแล้วแม้แต่โฟลเดอร์ย่อยก็ไม่มีปัญหา ฉันเพิ่งมีโฟลเดอร์ชื่อผิด (เครื่องหมายแน่นอนฉันทำงานสายเกินไป LOL) ในการแทนที่ส่วนเทมเพลตจะต้องใช้ไฟล์ที่มีชื่อเดียวกันในพา ธ เดียวกับชายด์เหมือนกับที่อยู่ในพาเรนต์
Ashley G
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.