หลายคนที่ใช้เวิร์ดเพรสในการทำเว็บ ถ้าเว็บมีหลายหน้า ซึ่งมีทั้งหน้าหลักและหน้าย่อยๆ ข้างในมากมาย ซึ่งรูปแบบที่นิยมทั่วไปก็คือ สร้างหน้าแม่ (parent page) และหน้าลูก (children page) ขึ้นมา โดยให้เมนูหน้าแม่อยู่ตรงด้านบนสุด เรียกว่าส่วน top navigation และให้ส่วนที่เป็นหน้าลูกแสดงในเมนูด้านข้าง ซึ่งจะปรากฎขึ้นมาเมื่อเราคลิกเมนูหน้าแม่ หรือหน้าปัจจุบันที่เราดูอยู่คือหน้าแม่นั่นเอง
วันนี้ ดิฉันก้อมีเทคนิคง่ายๆ เป็นโค้ดสั้นๆ มาฝาก ซึ่งมาจากคุณ Alen Grakalic ซึ่งเค้าได้เขียนเทคนิคนี้ไว้ใน WordPress: Find Page’s Top Level Parent ID วิธีการนี้มีหลักการที่ว่า เมื่อเข้าไปสู่หน้าแม่แล้วจะแสดงเมนูย่อยในระดับ 2 และ 3 โดยไม่มีปัญหาเรื่องเมนูหายไป เมื่อเข้าสู่หน้าย่อยระดับ 3 และโค้ดก็สั้นมากเลยทีเดียวค่ะ
ก่อนอื่นให้สร้างไฟล์ subnav.php โดยมีโค้ดข้างในดังนี้ค่ะ
<?php
if ($post->post_parent) {
$ancestors=get_post_ancestors($post->ID);
$root=count($ancestors)-1;
$parent = $ancestors[$root];
} else {
$parent = $post->ID;
}
$children = wp_list_pages("title_li=&child_of=". $parent ."&echo=0");
if ($children) { ?>
<ul id="subnav">
<?php echo $children; ?>
</ul>
<?php } ?>
เซฟไฟล์ subnav.php ไว้ในโฟลด์เดอร์เทมเพลสที่ใช้อยู่ จากนั้น เพิ่มแท็ก
<?php include(“subnav.php”); ?> ไว้ในไฟล์ sidebar.php ในส่วนที่ต้องการโชว์เมนูดังกล่าว
วิธีนี้เราไม่ต้องสร้างเพจเทมเพลสหลายอัน แล้วต้องมานั่งฮาร์ดโค้ดเข้าไป ก็คือใช้ได้กับทุกหน้าที่สร้างแบบ page template ค่ะ
โค้ดนี้ทดสอบแล้ว ได้ผลทำงานได้ทั้งในโลคอลเซิร์ฟเวอร์และออนไลน์ค่ะ ^^