[WordPress] ดึง template แต่ละส่วนที่เขียนไว้ด้วย get_template_part

ในการทำ WordPress Theme นั้น Template หลัก ๆ ที่เรามีการใช้งาน จะมีส่วนของ header ซึ่งจะมี get_header(), footer ซึ่งจะมี get_footer() และ sidebar ที่จะมี get_sidebar() แล้วถ้าเราจะสร้าง Template ส่วนอื่น ๆ นอกเหนือจากนี้ละ จะมีวิธีการใช้งานอย่างไร

WordPress : get_template_part

ยกตัวอย่างเป็นส่วนของเมนู หรือส่วนของ nav เพราะคิดว่าเป็นส่วนที่ทุกเว็บน่าจะมีอยู่แล้ว เราก็สร้างไฟล์ชื่อ nav.php (จะตั้งชื่อว่า abc.php, navigation.php หรือ gee.php ก็แล้วแต่จะตั้งชื่อกันนะครับ แต่ตั้งให้ชื่อสื่อความหมายจะดีกว่านะครับ) โดยในไฟล์ nav.php นั้น เราก็เขียน code สำหรับเมนูเราตามปรกติ เช่น

[php]
<div id="nav">
<?php wp_nav_menu( array(‘menu’ => ‘Main Menu’, ‘container’ => ”, ‘menu_id’ => ‘mainnav’, ‘menu_class’ => ‘clearfix’,’depth’=>’1′) ); ?>
</div>
[/php]

คราวนี้ตำแหน่งที่เราต้องการจะใส่เมนูลงไป ก็ใส่ code ไปว่า

[php]
<?php get_template_part(‘nav’); ?>
[/php]

ทีนี้เวลาเราจะแก้ไขเมนู เราก็แก้ไขที่ไฟล์ nav.php ที่เดียว แล้วทุกที่ที่ใช้งานเมนูจาก nav.php ก็จะเปลี่ยนตาม

แต่สมมติในหน้า single.php เราอยากจะใช้เมนูอีกแบบ เราสามารถสร้างไฟล์ชื่อ nav-single.php มาเพื่อใช้งานเฉพาะหน้า single.php ก็ได้ โดยจะเรียกใช้งานแบบนี้ครับ

[php]
<?php get_template_part(‘nav’,’single’); ?>
[/php]

WordPress : get_template_part กับ child theme

แต่สิ่งสำคัญของ get_template_part นั้นคือการใช้ร่วมกับบรรดา child theme ทั้งหลาย เพราะ get_template_part จะมีหลักการค้นหาไฟล์แบบนี้ครับ สมมติเราเขียน code ว่า

[php]
<?php get_template_part(‘loop’,’index’); ?>
[/php]

มันก็จะไปหา loop-index.php ใน child theme ก่อนว่ามีมั้ย ถ้าไม่มีมันจะหา loop.php ใน child theme ถ้าไม่มีอีกจึงจะไปหา loop-index.php และ loop.php ใน theme หลักตามลำดับ เขียนเรียงลำดับได้ดังนี้

  1. loop-index.php ใน child theme
  2. loop.php ใน child theme
  3. loop-index.php ใน theme หลัก
  4. loop.php ใน theme หลัก

ลองนำไปประยุกต์ใช้งานกันดูนะครับ ^^

Rabbitinblack

Blog เกี่ยวกับ HTML CSS jQuery Wordpress และเรื่องอื่น ๆ สัพเพเหระ

Proudly powered by WordPress & SeedThemes