การใช้แท็กแบบมีเงื่อนไขใน 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 หรือ 'การออกแบบเว็บ' ของกระสุนหน้า นี่คือหมวดหมู่การออกแบบเว็บอย่างชัดเจน
พารามิเตอร์
ดังที่คุณเห็นในตัวอย่างข้างต้น คุณสามารถใช้พารามิเตอร์ต่างๆ กับแท็กแบบมีเงื่อนไขได้ เช่น
- โพสต์ ID
- ชื่อกระทู้
- โพสต์กระสุน
แท็กแบบมีเงื่อนไขบางแท็ก เช่น แท็ก 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 เสนอและเพิ่มลงในข้อมูลโค้ดของคุณเพื่อปรับแต่งธีมของคุณในแบบที่คุณต้องการ