[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 หลัก

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


Posted

in

by

Comments

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

    1.  Avatar
      Anonymous

      ทำไมเหรอครับ (T-T)

      1. iannnnn Avatar

        ต่อนมากครับ

        1.  Avatar
          Anonymous

          ขอบคุณมากครับ ที่คุณแอนรู้จัก GEE 

          ถ้าไม่ติดตามคงไม่รู้จักนะครับ 555

  1. Todsapon Avatar
    Todsapon

    แหล่ม

  2.  Avatar
    Anonymous

    เข้าใจ แจ่มแจ้ง ลองทำแล้ว work ครับ ใน footer.php code มันมากไป ของผม ก็เลยสร้าง foot.php แล้วใช้ get_template_part(‘foot’) ก็ใช้ได้ครับ ทำให้สามารถนำมาประยุกต์ในการออกแบบที่หลากหลายได้ครับ thank you ครับ พี่

Leave a Reply

Your email address will not be published. Required fields are marked *