วิธีเพิ่มลอจิกแบบมีเงื่อนไขให้กับธีม WordPress ของคุณ
เผยแพร่แล้ว: 2021-02-25การสร้างเว็บไซต์ด้วย WordPress มีความยืดหยุ่นอย่างมากกับสิ่งที่คุณสามารถทำได้ทั้งในแง่ของการออกแบบและการทำงาน และเมื่อคุณเจาะลึกลงไปในการพัฒนาธีม คุณจะพบว่ามีบางครั้งที่คุณต้องกำหนดเป้าหมายเฉพาะหน้า หมวดหมู่ หรือประเภทโพสต์สำหรับบางสิ่งที่พิเศษ นั่นคือสิ่งที่ตรรกะตามเงื่อนไขสามารถทำให้งานของคุณง่ายขึ้นมาก
ตรรกะตามเงื่อนไขเป็นคุณลักษณะที่มีประสิทธิภาพของภาษาโปรแกรม (ในกรณีของเรา PHP) โดยพื้นฐานแล้ว เราสามารถใช้รหัสเพื่อตรวจสอบว่ามีเงื่อนไขใดอยู่หรือไม่ จากนั้นจึงทำบางอย่างเฉพาะเจาะจงหากตรงตามเงื่อนไขนั้น ตัวอย่างง่ายๆ ของสิ่งนี้คือการตรวจสอบเพื่อดูว่าผู้ใช้อยู่ในหน้าแรกของเว็บไซต์ของเราหรือไม่ การใช้ตรรกะตามเงื่อนไข เราอาจเลือกโหลดตัวเลื่อนหรือเนื้อหาพิเศษอื่นๆ ในสถานการณ์นั้น
สำหรับ WordPress มีแท็กตามเงื่อนไขที่มีประโยชน์จำนวนหนึ่งที่สร้างไว้ในซอฟต์แวร์ ซึ่งช่วยให้เราทดสอบสถานการณ์ต่างๆ ได้ทุกประเภท มีการจัดทำเอกสารอย่างดีและช่วยให้คุณสามารถนำฟังก์ชันการทำงานในระดับที่สูงขึ้นมาสู่ไซต์ของคุณได้
วันนี้ เราจะมาดูแท็กแบบมีเงื่อนไขที่ใช้กันทั่วไปสองสามแท็ก และวิธีที่คุณอาจนำไปใช้ในไซต์ของคุณเอง
หมายเหตุเกี่ยวกับการใช้แท็กตามเงื่อนไข
แท็กแบบมีเงื่อนไขคือโค้ด PHP บางส่วน และควรใส่ลงในธีมที่ใช้งานของไซต์ของคุณ มีสถานที่หลายแห่งที่คุณสามารถใช้ตรรกะตามเงื่อนไขภายในธีมได้
หากคุณยังไม่ได้ดำเนินการ ขอแนะนำให้ทำความคุ้นเคยกับลำดับชั้นของเทมเพลต WordPress เพื่ออธิบายวิธีการทำงานของไฟล์ธีม
และก่อนที่คุณจะลองใช้โค้ดใหม่บนไซต์ที่ใช้งานจริง คุณควรตั้งค่าสภาพแวดล้อมการพัฒนา (staging) เพื่อทดสอบสิ่งต่างๆ ก่อน โปรดจำไว้ว่าการเคลื่อนไหวที่ผิดพลาดเพียงครั้งเดียวกับ PHP อาจทำให้ไซต์ของคุณมี "หน้าจอสีขาวแห่งความตาย" ที่น่ากลัว ดังนั้น โปรดใช้ความระมัดระวังอย่างยิ่งในการทดสอบก่อนที่คุณจะทำงานบนเว็บไซต์จริง
is_home()
สิ่งนี้ทำให้เกิดความสับสนอย่างมากในหมู่นักพัฒนา เมื่อดูที่แท็ก คุณจะถือว่า is_home()
ใช้สำหรับตรวจสอบหน้าแรกของเว็บไซต์ของคุณ นั่นไม่ใช่กรณี
จริงๆ แล้วมันจะค้นหาหน้าที่กำหนดให้เป็นหน้าโพสต์ของคุณ ซึ่งตั้งค่าไว้ในการตั้งค่า > การอ่านภายในแดชบอร์ดของ WordPress ตามค่าเริ่มต้น WordPress จะใช้โฮมเพจของคุณเพื่อแสดงรายการโพสต์ แต่ไซต์ส่วนใหญ่มักจะใช้โฮมเพจแบบสแตติกแทน
ตัวอย่างเช่น หากคุณกำหนดหน้าที่ชื่อ “บล็อก” เป็นหน้าโพสต์ นั่นคือสิ่งที่ is_home()
จะมองหา
<?php // If this the Posts page, display a message. if ( is_home() ): echo '<h2>Thanks for visiting our blog!</h2>'; endif; ?>
is_front_page()
ในทางกลับกัน is_front_page()
จะค้นหาหน้าใดก็ตามที่ถูกตั้งค่าเป็นหน้าแรกของไซต์ของคุณ ไม่ว่าหน้านั้นจะคงที่หรือไม่ก็ตาม เป็นที่ยอมรับว่านี่ไม่ใช่สิ่งที่ชัดเจนที่สุดในโลกเมื่อคุณกำลังเรียนรู้ที่จะสร้างธีมของคุณเอง แต่การรู้ว่าควรใช้แท็กใดเป็นสิ่งสำคัญ
ข้อดีของแท็กเฉพาะนี้คือ แม้ว่าคุณจะกำหนดหน้าอื่นให้เป็นหน้าแรกในภายหลัง คุณก็ยังกำหนดเป้าหมายที่ที่ถูกต้อง มีวิธีที่ชัดเจนกว่าในการกำหนดเป้าหมายหน้า แต่วิธีนี้ช่วยให้คุณครอบคลุมในกรณีที่มีการเปลี่ยนแปลง
<?php // If this is the home page, show a special message. if ( is_front_page() ) { ?> <h1>Welcome</h1> <?php // Otherwise, show the page title. } else { ?> <?php the_title( '<h1 class="entry-title">', '</h1>' ); ?> <?php } ?>
is_single() และ is_page()
แต่ละแท็กเหล่านี้ทำหน้าที่สองอย่าง is_single()
จะดูว่า URL ปัจจุบันเป็นโพสต์หรือไม่ อาจเป็นโพสต์บล็อกมาตรฐาน ไฟล์แนบ หรือเป็นของประเภทโพสต์ที่กำหนดเอง
ในทำนองเดียวกัน is_page()
จะคืนค่า จริง หาก URL ปัจจุบันเป็นเพจ โดยค่าเริ่มต้น แท็กทั้งสองกำหนดเป้าหมายเนื้อหาที่อยู่ภายใต้ร่มของหน้าหรือโพสต์ นี่เป็นเธรดทั่วไประหว่างแท็กแบบมีเงื่อนไขจำนวนมาก
<?php // Target all posts. if ( is_single() ): echo 'You are on a single post.'; endif; // Target all pages. if ( is_page() ): echo 'This is a page'; endif; ?>
แต่คุณยังสามารถใช้ประโยชน์จากแท็กเหล่านี้เพื่อกำหนดเป้าหมายโพสต์หรือหน้าเฉพาะโดยเพิ่ม ID หรือกระสุน
<?php // Target About Us if ( is_page( 'about-us' ) ): ?> <a href="#"></a> <?php endif; ?>
การใช้อาร์เรย์จะทำให้คุณสามารถกำหนดเป้าหมายเนื้อหาได้หลายส่วน
<?php // Target About Us and Contact Us pages. if ( is_page( array('about-us', 'contact-us') ) ): ?> <a href="#"></a> <?php endif; ?>
is_tax() และ has_term()
การจัดหมวดหมู่มีบทบาทสำคัญในการจัดระเบียบเนื้อหาบนเว็บไซต์ สองประเภทที่พบบ่อยที่สุดคือหมวดหมู่และแท็ก – ซึ่งมีแท็กตามเงื่อนไขของตนเอง แต่ WordPress ยังช่วยให้เราสร้างอนุกรมวิธานของเราเองได้
ตัวอย่างเช่น หากไซต์ของคุณมีบทวิจารณ์เพลง คุณอาจมีการจัดหมวดหมู่ที่เรียกว่า "ประเภท" จากที่นั่น คุณสามารถระบุแนวเพลงที่เฉพาะเจาะจงภายในอนุกรมวิธานนั้น เช่น “ร็อค” “ฮิปฮอป” และ “แจ๊ส”
is_tax()
กำหนดเป้าหมายหน้าที่เก็บอนุกรมวิธาน ตามตัวอย่างรีวิวเพลงของเรา แท็กนี้จะเริ่มทำงาน (มีผลบังคับใช้) เมื่อเราอยู่ในหน้าเก็บถาวรสำหรับแต่ละประเภทที่เฉพาะเจาะจง
<?php // Display a message on our Genre archive pages. if (is_tax('genre','rock','hip-hop','jazz') ): echo '<h2>This is a genre archive. Enjoy!</h2>'; endif; ?>
has_term()
ใช้เพื่อกำหนดเป้าหมายโพสต์ปัจจุบันตามอนุกรมวิธานที่เป็นของ สิ่งนี้มีประโยชน์ ตัวอย่างเช่น เราต้องการเพิ่มกราฟิกพิเศษสำหรับโพสต์ในเพลงแต่ละประเภทบนเว็บไซต์ของเรา
<?php // Show an image for the Rock genre. if (has_term('rock','genre') ): ?> <?php endif; ?>
is_page_template()
เมื่อคุณคุ้นเคยกับลำดับชั้นเทมเพลตของธีมแล้ว คุณอาจต้องการสร้างเทมเพลตของเพจแบบกำหนดเอง is_page_template()
ให้คุณกำหนดเป้าหมายเทมเพลตของหน้าปัจจุบันที่กำลังใช้อยู่ (ไม่ว่าจะกำหนดเองหรือไม่ก็ตาม) คุณสามารถตรวจสอบเพื่อดูว่ามีการใช้เทมเพลตหน้าใดอยู่หรือค้นหาเทมเพลตใดโดยเฉพาะ
อย่างไรก็ตาม คุณต้องระวังเมื่อค้นหาเทมเพลตของเพจเฉพาะ เนื่องจากแท็กนี้จะตรวจสอบการมีอยู่ของชื่อไฟล์ เงื่อนไขอาจหยุดทำงานหากเปลี่ยนชื่อเทมเพลตนั้น คุณจะต้องอัปเดตรหัสเพื่อให้สอดคล้องกับการเปลี่ยนแปลงชื่อไฟล์
<?php // Add a search form to the Services page template. if (is_page_template('services.php') ): ?> <?php get_search_form(); ?> <?php endif; ?>
ตรงตามเงื่อนไขทุกประการ
แม้ว่านี่จะเป็นเพียงการแนะนำสั้นๆ เกี่ยวกับวิธีการใช้ตรรกะแบบมีเงื่อนไข แต่หวังว่าคุณจะกระตุ้นความอยากเรียนรู้เพิ่มเติม
เมื่อคุณเชี่ยวชาญเงื่อนไขแล้ว คุณจะสามารถปรับแต่งไซต์ของคุณในแบบที่แทบจะเป็นไปไม่ได้เลย
สิ่งเหล่านี้ช่วยให้คุณควบคุมรูปลักษณ์และเลย์เอาต์ของธีมได้อย่างละเอียด ในขณะที่ยังคงได้รับประโยชน์จากข้อดีทั้งหมดของการใช้ CMS