การใช้แท็กแบบมีเงื่อนไขใน WordPress

เผยแพร่แล้ว: 2012-12-27

มาดูวิธีเรียกใช้ฟังก์ชันที่กำหนดเองในธีมของคุณ สถานที่ของ hook ต่างๆ ตามเงื่อนไขบางประการที่ตรงตามเงื่อนไขและส่งคืนใช่

หากคุณใช้เฟรมเวิร์กของธีมระดับพรีเมียม เช่น เจเนซิส คุณจะสามารถเข้าถึงคู่มือผู้ใช้ได้

คู่มือผู้ใช้โดยทั่วไปมีข้อมูลโค้ดที่มีฟังก์ชันที่กำหนดเอง

หมายเหตุ: หากคุณไม่ได้ใช้เฟรมเวิร์กของธีมระดับพรีเมียม คุณจะต้องสร้างฟังก์ชันแบบกำหนดเองหรือค้นหาข้อมูลโค้ดที่ใช้งานได้กับธีมของคุณ

ฟังก์ชันที่กำหนดเองเหล่านี้สามารถดำเนินการได้ในตำแหน่งธีมเฉพาะโดยใช้ตะขอการดำเนินการธีมของคุณ

สิ่งที่คุณต้องทำคือวางข้อมูลโค้ดลงในไฟล์ functions.php ของธีมลูกของคุณเพื่อปรับแต่งฟังก์ชันธีมของคุณ

เฟรมเวิร์กของธีมแต่ละอันใช้ hooks ที่แตกต่างกัน อย่างไรก็ตาม พวกมันทำสิ่งเดียวกันได้มาก โดยตั้งชื่อต่างกันเช่น:

 thesis_after_post genesis_after_post woo_post_after

3 ตัวอย่างนี้ทั้งหมดดำเนินการหลังจากโพสต์เสร็จสิ้น โดยคุณอาจต้องการเพิ่มพื้นที่วิดเจ็ต แบนเนอร์ หรืออีเมลพร้อมปุ่มแชร์/ติดตามทางโซเชียล

แต่ถ้าคุณต้องการให้ฟังก์ชันแบบกำหนดเองทำงานในตำแหน่งของ hook เฉพาะตามเงื่อนไขบางประการเช่น ตัวอย่างเช่น:

  • เฉพาะในโพสต์เดียว: is_single()
  • เฉพาะในโพสต์ในหมวดหมู่เฉพาะ: is_category()
  • เฉพาะในหน้าเก็บถาวร: is_archive()
  • เฉพาะในหน้าแรก: is_home()

การเพิ่มแท็กแบบมีเงื่อนไขให้กับฟังก์ชันที่กำหนดเองซึ่งทำงานในตำแหน่ง hook ของธีม ช่วยให้คุณสามารถเรียกใช้ฟังก์ชันได้ก็ต่อเมื่อเงื่อนไขส่งคืนใช่เท่านั้น

หมายเหตุ: คุณอาจต้องการทดสอบแท็กเหล่านี้ด้วยข้อมูลโค้ดสำหรับฟังก์ชันที่กำหนดเองของคุณในการตั้งค่าภายในเครื่อง ก่อนที่คุณจะเพิ่มโค้ดลงในไซต์ที่ใช้งานจริง

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

ฉันจะใช้คำสั่งแบบมีเงื่อนไขได้อย่างไร

ตัวอย่างแท็กแบบมีเงื่อนไข

นี่คือแท็กตามเงื่อนไขทั่วไปที่นักออกแบบ WordPress รวมถึงผู้พัฒนาธีมและปลั๊กอินใช้

 is_home() is_category() is_single() is_page()

ประการแรก มาดูการใช้แท็กแบบมีเงื่อนไขโดยยึดตามหลายคำสั่ง

is_single & in_category

 if (is_single() && in_category('134'))
 if (is_single() && in_category('web-design'))

ข้อมูลโค้ดทั้งสองนี้ทำสิ่งเดียวกันทุกประการและมีแท็กแบบมีเงื่อนไข 2 แท็ก

อันแรกใช้หมวดหมู่ id 134 และอันที่สองใช้หมวดหมู่ slug 'web-design'

ฟังก์ชันใดๆ ที่คุณรวมไว้กับรหัสนี้จะทำงานในโพสต์เดียวในหมวดหมู่ที่มีรหัสโพสต์ 134 หรือ 'การออกแบบเว็บ' ของกระสุนหน้า นี่คือหมวดหมู่การออกแบบเว็บอย่างชัดเจน

พารามิเตอร์

ดังที่คุณเห็นในตัวอย่างข้างต้น คุณสามารถใช้พารามิเตอร์ต่างๆ กับแท็กแบบมีเงื่อนไขได้ เช่น

  1. โพสต์ ID
  2. ชื่อกระทู้
  3. โพสต์กระสุน

แท็กแบบมีเงื่อนไขบางแท็ก เช่น แท็ก is_home() ไม่ได้ยกเว้นพารามิเตอร์ใดๆ ที่อาจเป็นเพราะว่าไม่ต้องการจริงๆ

is_page

 if (is_page('4289'))
 if (is_page('contact'))

แท็กเงื่อนไขทั้งสองนี้ทำสิ่งเดียวกันทุกประการเช่นกัน

อันแรกใช้หน้าโพสต์ id ของ 4289 และตัวที่สองชื่อเพจและ slug 'ติดต่อ'

ฟังก์ชันที่คุณรวมไว้กับแท็กนี้จะดำเนินการในหน้าติดต่อเท่านั้น

หน้าแรก แท็กแบบมีเงื่อนไข

การใช้งานทั่วไปส่วนใหญ่สำหรับการใช้แท็ก is_home คือการแสดงบางอย่างในหน้าแรกเท่านั้น หรือยกเว้นหน้าแรกจากฟังก์ชัน

is_home

 if (!is_home()

รหัสนี้มี ! ก่อนแท็กเงื่อนไข home_page ดังนั้นจึงแยกหน้าแรกออกจากฟังก์ชัน

 if (is_home()

รหัสนี้สร้างเงื่อนไขที่ใช้กับโฮมเพจเท่านั้น

ตัวอย่างการทำงาน

หากคุณคัดลอกและวางโค้ดต่อไปนี้โดยใช้โปรแกรมแก้ไขโค้ด ลงในไฟล์ฟังก์ชันธีมลูก คุณจะพบว่าโค้ดดังกล่าวพิมพ์ข้อความหลังส่วนหัวในโพสต์เดียวเท่านั้น

 add_action( 'genesis_entry_footer', 'add_content_after_single_posts' ); function add_content_after_single_posts() { if ( is_singular('post') ) { echo 'Content Added After Single Post Entry Footer'; } }

รหัสด้านบนใช้ตำแหน่งขอ genesis_entry_footer พร้อมแท็กเงื่อนไข is_singular('post') และพิมพ์ข้อความหลังเนื้อหาในโพสต์เดียวเท่านั้น นี่เป็นตัวอย่างคลาสสิกที่แสดงวิธีใช้แท็กแบบมีเงื่อนไขในฟังก์ชันแบบกำหนดเองกับตะขอการดำเนินการธีมของคุณ

แท็กแบบมีเงื่อนไขพร้อมอาร์เรย์

คุณยังสามารถเพิ่มอาร์เรย์ให้กับคำสั่งแบบมีเงื่อนไขของคุณได้

is_page (อาร์เรย์

 if (is_page(array('contact','37290'))

คุณสามารถเพิ่มหน้าในอาร์เรย์นี้ได้ง่ายๆ โดยการรวมไว้ในอาร์เรย์นี้โดยคั่นด้วยเครื่องหมายจุลภาค

ฟังก์ชันนี้จะดำเนินการบนหน้าติดต่อและหน้าที่มีรหัสโพสต์ 37290 เท่านั้น

เอาต์พุตข้อความ/HTML

หากคุณเพียงต้องการแสดงข้อความหรือ HTML คุณสามารถเพิ่มคำสั่งแบบมีเงื่อนไขให้กับตะขอการดำเนินการของธีมได้ วิธีที่ง่ายที่สุดในการทำเช่นนี้คือการวางแท็กแบบมีเงื่อนไขด้วย HTML ของคุณโดยใช้ปลั๊กอินเบ็ด

 if ( ! is_home()) { echo'Your Text Here'; }

ลองใช้ฟังก์ชันทั่วไปกับ action hook และเพิ่มแท็กแบบมีเงื่อนไข

แท็กแบบมีเงื่อนไขในปฐมกาล

คุณสามารถเพิ่มข้อมูลโค้ดธีม Genesis อย่างใดอย่างหนึ่งเพื่อใช้ในธีม StudioPress และรวมแท็กแบบมีเงื่อนไขพร้อมโค้ดได้

 /** Add custom body class to video category */ add_filter( 'body_class', 'add_body_class' ); function add_body_class( $classes ) { if ( is_category( 'video-tutorials' ) ) $classes[] = 'custom-class'; return $classes; }

รหัสนี้ช่วยให้ผู้ใช้จัดรูปแบบหน้าหมวดหมู่วิดีโอโดยใช้คลาสที่กำหนดเอง

พารามิเตอร์ที่ใช้คือกระสุนวิดีโอสอน อย่างไรก็ตาม คุณสามารถใช้ post.id หรือชื่อในแท็กแบบมีเงื่อนไขของคุณได้

แท็กเงื่อนไขในวิทยานิพนธ์

ให้ใช้ฟังก์ชันแบบกำหนดเองจากคู่มือผู้ใช้ธีม DIY และเพิ่มคำสั่งแบบมีเงื่อนไข

 function hide_nav_menu() { if(is_page ( 'contact-page' ) ) remove_action ( 'thesis_hook_before_header', 'thesis_nav_menu' ); } add_action ( 'thesis_hook_before_html','hide_nav_menu' );

การดำเนินการนี้จะซ่อนเมนูนำทางในหน้าติดต่อเท่านั้น

เราสามารถใช้พารามิเตอร์ต่างๆ สำหรับหน้าติดต่อรวมทั้งทากของเพจ โพสต์ id หรือชื่อเพจ

จะใส่รหัสได้ที่ไหน

หากคุณใช้เฟรมเวิร์กของธีมระดับพรีเมียม คุณสามารถวางโค้ดลงในไฟล์ functions.php ของธีมลูกได้

กรอบงานเหล่านี้ทั้งหมดมีปลั๊กอินหรือตัวจัดการของ hook ซึ่งช่วยให้คุณสามารถวางโค้ดลงในตำแหน่ง hook ที่คุณต้องการให้โค้ดดำเนินการตามแท็กแบบมีเงื่อนไขของคุณ

  • ผู้จัดการ Woo hook
  • Genesis Simple Hooks
  • วิทยานิพนธ์ ความคืบหน้า & WordPress Hooks

เห็นได้ชัดว่าคุณไม่จำเป็นต้องรวม action hook ในโค้ดของคุณ หากคุณใช้ hook manager

อีกทางเลือกหนึ่งคือการวางแท็กแบบมีเงื่อนไขลงในไฟล์เทมเพลตธีมของคุณโดยตรงในตำแหน่งที่คุณต้องการเรียกใช้ฟังก์ชันตามเงื่อนไขของคุณ นี่ไม่ใช่แนวทางปฏิบัติที่ดีที่สุด เนื่องจากโค้ดจะสูญหายเมื่ออัปเดตธีม

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

WordPress Conditional Tags & Examples

คุณจะพบรายการแท็กแบบมีเงื่อนไขของ WordPress ทั้งหมดพร้อมตัวอย่างใน WordPress Codex

แท็กเงื่อนไขเฉพาะธีม

ธีมพรีเมียมบางธีมยังใช้แท็กแบบมีเงื่อนไขซึ่งเป็นเอกลักษณ์เฉพาะสำหรับเฟรมเวิร์กของธีม

Woo Commerce เป็นหนึ่งในนั้น: ตัวอย่าง:

 is_woocommerce() - Returns true if on a page which uses WooCommerce templates is_product_category() - Returns true when viewing a product category archive is_checkout() - Returns true on the checkout page.

เรียนรู้เพิ่มเติมเกี่ยวกับการใช้แท็กแบบมีเงื่อนไขกับ Woo Commerce

บทสรุป

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