รู้จักแท็กเงื่อนไขของเวิร์ดเพรส (WordPress Conditional Tags)
10 | | | WordPress, ความรู้, ระดับสูง WordPress
สวัสดีครับ สำหรับบทความในวันนี้จะต่อจากบทความที่แล้ว ที่คุยเรื่องเกี่ยวกับ 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) หรือไม่
หน้าบทความ (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 ได้นะครับ ในนั้นจะมีรายละเอียดวิธีการใช้งานให้เห็นภาพชัดขึ้น แต่หากใครยังสงสัยอยู่ก็สามารถติดต่อสอบถามมาได้นะครับ สำหรับบทความนี้ก็ขอจบไว้เพียงเท่านี้ สวัสดีครับ..