ลบแท็ก LI ออกจากเมนูที่ได้จากฟังก์ชัน wp_nav_menu ของเวิร์ดเพรส

สำหรับเพื่อนๆ ทั้งที่เคยใช้และไม่เคยใช้ฟังก์ชัน wp_nav_menu เห็นหัวข้อแล้วก็ไม่ต้องตกใจนะครับ ไม่ใช่ว่าของเค้าทำมาไม่ดีนะครับ ออกตัวไว้ก่อน ^^ เทคนิคนี้เอาไว้ประยุกต์ใช้ในบางโอกาศที่เราไม่ต้องการแท็ก LI แต่อยากได้ความสามารถในการแก้ไขเมนูจากหลังบ้านได้เอง โดยไม่ต้องฝังลิงค์ (hard code) ไว้ในธีม และแน่นอนว่ามันจะอำนวยความสะดวกกับผู้ใช้เราด้วย

พระเอกของเราก็คือฟังก์ชัน strip_tags ของ PHP ซึ่งจะทำหน้าที่ลบแท็กที่เราไม่ต้องการออกให้เหลือไว้แค่แท็ก <a> ของเมนู

$args = array(
  'theme_location' => 'primary',
  'container'       => false,
  'echo'            => false,
  'items_wrap'      => '%3$s',
  'depth'           => 0,
);

echo strip_tags(wp_nav_menu( $args ), '<a>' );

จะเห็นว่าเรากำหนดให้ค่าของ items_wrap เหลือไว้แค่ ‘%3$s’ จะได้เหลือแค่แท็ก LI และไม่ให้ฟังก์ใช้ echo ค่าออกมา (echo=false) จะสังเกตุเห็นว่าเราไม่เอา sub เมนูมาด้วยนะครับ (depth=0) อาจจะต้องระวังสำหรับใครที่จะใช้เทคนิคนี้

แหล่งข้อมูล: Remove LI Elements From Output of wp_nav_menu