รู้จักแท็กเงื่อนไขของเวิร์ดเพรส (WordPress Conditional Tags)

สวัสดีครับ สำหรับบทความในวันนี้จะต่อจากบทความที่แล้ว ที่คุยเรื่องเกี่ยวกับ WordPress functions นะครับ โดยวันนี้เราจะมาพูดถึงเรื่องแท็กเงื่อนไขของเวิร์ดเพรส (WordPress Conditional Tags) ก่อนที่เราจะเข้าเรื่องเราจะมารู้จักกันก่อนว่าแท็กเงื่อนไขนี้คืออะไร และทำหน้าที่อย่างไรกันครับ

แท็กเงื่อนไขของเวิร์ดเพรส (WordPress Conditional Tags)

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

วิธีการใช้งาน Conditional Tags

ตัวอย่าง การใช้แท็กทดสอบว่าหน้าที่แสดงเป็นหน้าบทความหรือไม่ด้วย แท็ก is_single() ถ้าใช่ให้แสดงหัวข้อประโยค This post title is ชื่อบทความ

if ( is_single() ) {
     echo 'This post\'s title is ' . get_the_title();
}

เราสามารถใช้ใน functions.php ในกรณีที่อยู่ใน Child Theme ตามตัวอย่างด้านล่าง

add_action( 'loop_start', 'add_to_single_posts' );
function add_to_single_posts() {
   if ( is_single('post') ) {
      echo'<div class="your-class">Your Text or HTML</div>';
   }
}

ในกรณีที่ต้องการทดสอบหลายคอนดิชั่น เช่น สองแท็กหรือมากกว่านั้นก็สามารถทำได้ เช่น ตรวจสอบว่าเป็นหน้าแรก (Home) หรือหน้าบทความ (Single) หรือไม่ ตามตัวอย่าง

if ( is_home() || is_single() ) {
   the_content();
} else {
   the_excerpt();
}

และในกรณีที่ ต้องการทดสอบว่าไม่ใช่ เช่น หากหน้าที่แสดงไม่ใช่หน้า Homepage ตามตัวอย่าง

<?php if ( ! is_home() ) {?>
  Insert your markup..
<?php } ?>

การระบุค่าใน Conditional Tags

ในแท็กบางแท็กสามารถระบุลงไปถึงรหัสประจำตัว (ID) ชื่อบทความ สลัก อะเรย์ หรือรูปแบบอื่นๆ ขึ้นอยู่กับแท็กนั้นๆ ว่า ให้สามารถทำได้หรือไม่ ยกตัวอย่างเช่น

  • is_single(‘9’) เป็นแท็กที่ใช้ตรวจสอบหน้าบทความที่แสดงเป็นไอดีที่ 9 หรือไม่ หากใช่ก็ให้ทำต่อไป
  • is_single(‘Cute Dog’) เป็นแท็กที่ใช้ตรวจสอบหน้าบทความที่แสดงชื่อ Cute Dog หรือไม่ หากใช่ก็ให้ทำต่อไป
  • is_single(‘cute-dog’) เป็นแท็กที่ใช้ตรวจสอบหน้าบทความที่แสดงมีสลักชื่อ cute-dog หรือไม่ หากใช่ก็ให้ทำต่อไป
  • is_single(array( ‘beef-stew’, ‘pea-soup’, ‘chili’ )) เป็นแท็กที่ใช้ตรวจสอบว่าหน้าบทความอยู่ในกลุ่ม Array นี่หรือไม่

รายการแท็กคอนดิชั่น (Conditional Tags Lists)

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

หน้าแรกหรือหน้าหลัก (Home Page or Front Page)

is_home() เป็นแท็กเงื่อนไขสำหรับการตรวจสอบว่า หน้าแรกเป็นรายการบทความหรือไม่ ถ้าหน้าแรกถูกตั้งค่าที่ Administration > Settings > Reading เป็น Blog Page ก็จะทำการตรวจเงื่อนไขในส่วนของรายการบทความในหน้าแรก แต่ถ้าหน้าแรกถูกตั้งค่าเป็น Static Page แท็กเงื่อนไขนี้จะถูกใช้ในการตรวจสอบในหน้า Blog ที่เป็นหน้ารายการบทความ (Posts page) ครับ

is_front_page() เป็นแท็กเงื่อนไขที่ใช้สำหรับการตรวจสอบว่าเป็นหน้าแรกหรือไม่เท่านั้นและค่าที่ได้จะเป็นจริงไม่ว่าหน้าแรกจะเป็นแบบรายการบทความ (Your Latest Post) หรือ หน้าคงที่ (Static Page) ทั้งนี้การตั้งค่าหน้าแรกอยู่ตรงในส่วนของ Administration > Settings > Reading

หน้ารายการบทความ (Blog)

is_front_page() and is_home() เป็นแท็กเงื่อนไขที่ใช้สำหรับหน้ารายการบทความ โดยจะต้องใช้ทั้งสองฟังก์ชั่นร่วมกัน ซึ่งรูปแบบคำสั่งนั้นผู้ใช้สามารถระบุได้ว่าหน้าหลักเป็นหน้าแรก และหน้าอื่นเป็นหน้ารายการบทความ ดังตัวอย่าง

if ( is_front_page() && is_home() ) {
   // Default homepage
} elseif( is_front_page() ) {
   // static homepage
} elseif( is_home() ) {
   // blog page
} else {
   // everything else
}

หน้าแอดมิน (Administration Panels)

is_admin() เป็นแท็กเงื่อนไขสำหรับตรวจสอบว่าหน้าที่แสดงอยู่เป็นหน้าหน้าแอดมินหรือหลังบ้าน (Dashboard) หรือไม่

is_network_admin() เป็นแท็กเงื่อนไขสำหรับตรวจสอบว่าหน้าที่แสดงอยู่เป็นหน้าแอดมินสำหรับหลายเว็บแบบเครือข่าย (Multisite) หรือไม่

สอน WordPress หรือ WooCommerce
สอน WordPress หรือ WooCommerce

หน้าบทความ (A Single Post Page)

is_single() เป็นแท็กเงื่อนไขสำหรับตรวจสอบว่าหน้าที่แสดงอยู่คือหน้าบทความหรือไม่ แท็กนี้สามารถที่จะใช้การระบุค่าใน Conditional Tags ตามเนื้อหาด้านบน

บทความที่โดนล็อกไว้ (A Sticky Post)

is_sticky() เป็นแท็กเงื่อนไขสำหรับตรวจสอบว่าส่วนที่แสดงอยู่นั้นเป็นส่วนของบทความที่กำหนดล็อกไว้ให้แสดงในหน้าแรกหรือไม่ เราสามารถกำหนดลงลึกไปได้ด้วยว่าเป็นหมายเลขไอดีอะไร เช่น is_sticky(‘17’) เป็นต้น

หน้าหลัก (A PAGE Page)

is_page() เป็นแท็กเงื่อนไขไว้ตรวจสอบว่าหน้าที่แสดงอยู่เป็นหน้าหลักใช่หรือไม่ และสำหรับแท็กนี้สามารถที่จะใช้การระบุค่าใน Conditional Tags ตามเนื้อหาด้านบน

is_page_template() แท็กที่ไว้ตรวจสอบว่ามีหน้าเทมเพลตถูกใช้งานหรือไม่ เราสามารถทำการระบุได้ถึงไฟล์ที่ใช้งานของเทมเพลตนั้นๆ ด้วย เช่น is_page_template(‘about.php’) เป็นการตรวจสอบว่าหน้าที่แสดงใช้เทมเพลต About.php หรือไม่

หน้าหมวดหมู่ (A Category Page)

is_category() สำหรับแท็กหมวดหมู่นี้ใช้ตรวจสอบหน้าแสดงผลว่าเป็นหน้าหมวดหมู่หรือไม่ เราสามารถเขียนเพื่อตรวจสอบทุกหน้าหรือระบุลงไปใน Conditional Tags ตามเนื้อหาด้านบน

หน้าป้ายกำกับ (A Tag Page)

is_tag() เป็นแท็กสำหรับป้ายกำกับไว้ใช้สำหรับตรวจสอบหน้าแสดงผลว่าเป็นหน้าป้ายกำกับหรือไม่ เราสามารถเขียนเพื่อตรวจสอบทุกหน้าหรือระบุใน Conditional Tags ตามเนื้อหาด้านบน

หน้าที่เป็นอนุกรมวิธาน (Taxonomy Page)

is_tax() จะใช้สำหรับส่วนของหน้า Taxonomy Page หรือหน้าหมวดหมู่ที่ถูกสร้างขึ้นมาเฉพาะ โดยจะเป็นการแยกระหว่างหน้าที่เป็น Custom taxonomy กับหน้าที่เป็น Built-in taxonomy ในที่นี้ก็คือหน้าหมวดหมู่ (Category) หน้าป้ายกำกับ (Tag) ออกจากกัน  แท็กนี้สามารถที่จะใช้การระบุค่าใน Conditional Tags ตามเนื้อหาด้านบน

หน้าผู้เขียน (An Author Page)

is_author() เป็นแท็กที่ไว้ใช้ตรวจสอบหน้าที่แสดงผลว่าเป็นหน้าผู้เขียนหรือไม่ แท็กนี้สามารถที่จะใช้การระบุค่าใน Condition Tags ตามเนื้อหาด้านบน

หน้าวัน (A date Page)

เราสามารถตรวจสอบหน้าดังกล่าวว่าเป็นหน้าแสดงผลเป็นรายวัน รายเดือน รายปี ได้ ดังต่อไปนี้

  • is_date() ใช้ตรวจสอบว่าหน้าที่แสดงผลแสดงรายการแบบ วัน เดือน ปี เช่น 13 สิงหาคม 2564 ใช่หรือไม่
  • is_date() ใช้ตรวจสอบว่าหน้าที่แสดงผลแสดงรายการแบบ วัน เดือน ปี เช่น 13 สิงหาคม 2564 ใช่หรือไม่
  • is_year() ใช้ตรวจสอบว่าหน้าที่แสดงผลเป็นหน้ารายปีหรือไม่
  • is_month() ใช้ตรวจสอบว่าหน้าที่แสดงผลเป็นหน้ารายเดือนหรือไม่
  • is_day() ใช้ตรวจสอบว่าหน้าที่แสดงผลเป็นหน้ารายวันหรือไม่
  • is_time() ใช้ตรวจสอบว่าหน้าที่แสดงผลเป็นการแสดงผลแบบรายชั่วโมง นาที หรือวินาที หรือไม่
  • is_new_day() ใช้ตรวจสอบว่าหน้าที่แสดงผลเป็นหน้าวันใหม่หรือไม่

หน้าคลังเก็บข้อมูล (Any Archive Page)

is_archive() เป็นแท็กที่ไว้ใช้ตรวจสอบว่าหน้าที่แสดงผลเป็นคลังเก็บรายการบทความในรูปแบบต่างๆ ไม่วาจะเป็นหมวดหมู่ (Category) ป้ายกำกับ (Tag) หรือหมวดหมู่ที่กำหนดเอง หน้าผู้เขียนและหน้าวัน เดือน ปี

หน้าค้นหา (A Search Result Page)

is_search() เป็นแท็กที่ไว้ใช้ตรวจสอบว่าหน้าที่แสดงผลเป็นหน้าผลลัพธ์ของการค้นหาหรือไม่

หน้าค้นหาข้อมูลไม่พบ (A 404 Not Found Page)

is_404() เป็นแท็กที่ไว้ตรวจสอบว่าหน้าที่แสดงผลเป็นหน้าค้นหาข้อมูลไม่พบหรือไม่

หน้าบทความ หน้าคงที่ หน้าเอกสารแนบ และหน้าประเภทเนื้อหาที่กำหนดเอง (A Single Page, a Single Post, and Attachment or Any Other Custom Post Type)

is_singular() เป็นแท็กที่ใช้เพื่อตรวจสอบว่าหน้าที่แสดงนั้นเป็นหน้าบทความ หน้าคงที่ หน้าเอกสารแนบ และหน้าประเภทเนื้อหาที่กำหนดหรือไม่ แท็กนี้สามารถที่จะใช้การระบุค่าใน Conditional Tags ตามเนื้อหาด้านบน

ปรึกษาด้านเว็บไซต์
ปรึกษาด้านเว็บไซต์

การประมวลผลหลัก (Is Main Query)

is_main_query() เป็นแท็กที่ใช้ตรวจสอบว่าการประมวลผล ณ จุดนั้น (Current query) เป็นการประมวลผลหลัก (Main query) หรือไม่ ดังตัวอย่าง

add_action( 'the_content', 'baw_add_social_buttons' );
function baw_add_social_buttons( $content ) {
   if ( ! is_admin() && is_main_query() ) {
      return $content . function_from_a_social_plugin();
   }
   return $content;
}

พรีวิว (A Preview)

is_preview() เป็นแท็กใช้ตรวจสอบว่าหน้าที่แสดงเป็นหน้าพรีวิวหรือไม่

ข้อความที่ตัดตอนมา (Has An Excerpt)

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

แถบด้านข้างไดนามิค (Is Dynamic SideBar)

is_dynamic_sidebar() เป็นแท้กที่ใช้ใช้ตรวจสอบว่า ธีมที่ใช้สนบสนุนแถบด้านข้างแบบไดนามิคหรือไม่

แถบด้านข้างถูกใช้งาน (Is Sidebar Active)

is_active_sidebar() เป็นแท็กที่ใช้ตรวจสอบว่าแถบด้านข้าง (Sidebar) ได้ถูกใช้หรือไม่

วิตเจ็ตถูกใช้งาน (Is Widget Active)

is_active_widget( $widget_callback, $widget_id ) เป็นแท็กที่ใช้ตรวจสอบว่ามี widget ที่มีไอดีตามที่ระบุไว้แสดงในหน้าแรกหรือไม่

ผู้ใช้งานล็อกอิน (Is User Logged in)

is_user_logged_in() เป็นแท็กที่ไว้ใช้ตรวจสอบว่ามีผู้ใช้งานล็อกอินหรือไม่

ปลั๊กอินถูกใช้งาน (An Active Plugin)

is_plugin_active() เป็นแท็กที่ไว้ใช้ตรวจสอบว่าปลั๊กอินมีการเปิดใช้งานหรือไม่

ธีมลูก (A Child Theme)

is_child_theme() เป็นแท็กที่ไว้ใช้ตรวจสอบว่า ได้มีการใช้ Child Theme หรือไม่

รูปหลัก (Has Post Thumbnail)

has_post_thumbnail( $post_id ) เป็นแท็กที่ไว้ใช้ตรวจสอบว่า ในหน้าบทควาที่ระบุมีรูปหลัก (Featured Image) หรือไม่

พรีวิวในหน้าปรับแต่ง (Is Previewd in the Customizer)

is_customize_preview() เป้นแท็กที่ใช้ใช้ตรวจสอบว่า ไซต์ถูกแสดงลักษณะพรีวิวในหน้าปรับแต่งหรือไม่

บทสรุป

แท็ก WordPress ที่เป็น Conditional Tags นั้น หากเรานำมาใช้งานในการเขียนธีมหรือปลั๊กอิน จะมีประโยชน์มาก ทำให้เราสามารถกำหนดให้การแสดงผลเป็นไปตามที่เราต้องการได้ หากสงสัยในแท็กต่างๆ เราก็สามารถทำการค้นหาแท็กนั้นๆ ไปดูตัวอย่างใน WordPress ได้นะครับ ในนั้นจะมีรายละเอียดวิธีการใช้งานให้เห็นภาพชัดขึ้น แต่หากใครยังสงสัยอยู่ก็สามารถติดต่อสอบถามมาได้นะครับ สำหรับบทความนี้ก็ขอจบไว้เพียงเท่านี้ สวัสดีครับ..