WordPress loop: คืออะไรและสิ่งที่คุณต้องรู้เกี่ยวกับมัน

เผยแพร่แล้ว: 2023-10-25

หากคุณเป็นนักพัฒนาธีม WordPress, โปรแกรมเมอร์ หรือเพียงแค่ผู้ที่สนใจที่จะเรียนรู้ว่า WordPress Loop คืออะไร บทความนี้เหมาะสำหรับคุณ! เพื่อเป็นการไม่ให้เสียเวลา เรามาเริ่มกันที่พื้นฐานกันดีกว่า: Loop คืออะไร?

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

ลูปเว็บไซต์เหล่านี้สามารถใช้เพื่อแสดงรายการโพสต์ตามจำนวนความคิดเห็น แสดงโพสต์พร้อมรูปภาพ และอื่นๆ

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

แท็กเทมเพลตเหล่านี้ทำงานภายในลูปเริ่มต้นของ WordPress เท่านั้น และใช้เพื่อจัดรูปแบบ จัดเรียง และเผยแพร่ข้อมูลโพสต์

ไม่ต้องสงสัยเลยว่า WordPress Loop เป็นส่วนที่สำคัญที่สุดของโค้ด WordPress และให้เราเจาะลึกว่าเว็บไซต์ของคุณวนซ้ำอย่างไร

การวนรอบหน้า WordPress สำหรับผู้เริ่มต้น

ดังที่เราได้กล่าวไปแล้ว post loop คือโค้ดที่แสดงผลข้อมูลทั้งหมดที่ WordPress มีเกี่ยวกับโพสต์หรือโพสต์ มันทำงานในพื้นหลังผ่านแต่ละโพสต์ และค้นหาฐานข้อมูลทีละรายการ ซึ่งช่วยให้สามารถจัดหาข้อมูลเกี่ยวกับโพสต์ที่พบทั้งหมด

นี่คือตัวอย่างการทำงานของ WordPress ในการวนซ้ำโพสต์:

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

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

  1. กำหนดสิ่งที่เรากำลังมองหา
  2. เริ่มวนซ้ำ
  3. ดำเนินการกับแต่ละโพสต์หรือเพจที่พบ
  4. ปิดวง

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

WordPress while loop ทำงานในลักษณะเดียวกัน

ตัวอย่างการวนซ้ำ WordPress มาตรฐาน

ด้านล่างนี้เป็นตัวอย่างของลูป WordPress มาตรฐานที่สามารถใช้กับหน้าใดก็ได้

<?php if ( have_posts() ) : ?>
<?php while ( have_posts() ) : the_post() ?>
// Post display here
<?php endwhile ?>
<?php else : ?>
// Content if there are no posts to show
<?php endif ?>

ลองดูฟังก์ชัน have_posts() และ the_post() อันแรกกำหนดว่ามีโพสต์ใด ๆ ที่จะแสดงหรือไม่ และอันที่สองตั้งค่าข้อมูลและจุดภายในซึ่งช่วยฟังก์ชัน have_posts()

หากไม่มีสิ่งใดที่จะแสดง ฟังก์ชันก็ควรแสดงข้อความแจ้งให้ผู้ใช้ทราบ

หากมีโพสต์ที่เรากำลังมองหา ลูปจะแสดงทีละโพสต์

มีบล็อกโค้ดที่จะแสดงโพสต์จริงๆ อยู่ที่เรา!

<?php if ( have_posts() ) : ?>
<?php while ( have_posts() ) : the_post() ?>
<div <?php post_class() ?>>
<h2><a href='<?php the_permalink() ?>'><?php the_title() ?></a></h2>
<div class='post-excerpt'>
<?php the_excerpt() ?>
</div>
<div class='post-meta'>
<time><?php the_time( 'Ymd' ) ?></time>
<?php if ( has_category() ) : ?>
<span class='post-categories'><?php the_category( ', ' ) ?></span>
<?php endif ?>
</div>
</div>
<?php endwhile ?>
<?php else : ?>
<h2>There are no posts here</h2>
<p>Do you want to go back to the <a href='<?php echo site_url() ?>'>home page?
<?php endif ?>

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

เยี่ยมมาก! ตอนนี้คุณรู้แล้วว่า Post Loop คืออะไร!

การใช้โค้ดเพื่อเปลี่ยนแบบสอบถามหลัก

ก่อนที่เราจะเริ่มต้น เราต้องเตือนคุณว่าการเปลี่ยนแปลงคำถามหลักอาจส่งผลตามมาโดยไม่ตั้งใจหากคุณไม่รู้ว่าคุณกำลังทำอะไรอยู่ ใช้ความระมัดระวังในขณะทดลอง!

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

add_action( 'pre_get_posts', 'my_exclude_category' );
function my_exclude_category( $query ) {
if ( $query->is_home() && $query->is_main_query() ) {
$query->set( 'cat', '-92' );
}
}

โปรดทราบว่าเราใช้ตะขอ pre_get_post เพื่อแก้ไขพารามิเตอร์ของแบบสอบถามหลักก่อนที่จะทำงาน โค้ดด้านบนทำสิ่งเดียวกันกับโค้ดก่อนหน้านี้ แต่คราวนี้ไม่รวมหมวดหมู่ 92 ออกจากหน้าแรกของเรา จึงมีการแก้ไขแบบสอบถามหลัก

ดูฟังก์ชัน is_home() และ is_main_query() พวกเขาอยู่ที่นี่เพื่อให้แน่ใจว่าแบบสอบถามได้รับการแก้ไขเฉพาะในหน้าแรกและเป็นแบบสอบถามหลักหรือไม่

นี่เป็นอีกโค้ดหนึ่งที่มีประโยชน์ในบล็อก WordPress ของบล็อก

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

ซึ่งสามารถทำได้โดยการเพิ่มโค้ดดังนี้:

add_action( 'pre_get_posts', 'my_exclude_author' );
function my_exclude_author( $query ) {
$query->set( 'author', '-23' );
}

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

add_action( 'pre_get_posts', 'my_exclude_author' );
function my_exclude_author( $query ) {
if( !is_admin() ) {
$query->set( 'author', '-23' );
}
}

คำถามที่พบบ่อยเกี่ยวกับ WordPress loop

WordPress loop คืออะไร?

โอ้เพื่อน นี่พาฉันกลับไป! โดยพื้นฐานแล้ว WordPress loop คือกลไกของ WP ที่แสดงเนื้อหาจากฐานข้อมูลบนไซต์ของคุณ

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

เหตุใดการวนซ้ำจึงมีความสำคัญในการพัฒนาธีม

อ่า การพัฒนาธีม ปริศนาที่สนุกทุกครั้ง! การวนซ้ำเป็นเหมือนกระดูกสันหลังของธีม WordPress หากไม่มีสิ่งนี้ ธีมของคุณก็คงจะเป็นหนังเงียบที่ไม่มีเนื้อเรื่อง

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

WP_Query เกี่ยวข้องกับลูปอย่างไร

เอาล่ะ มาดำน้ำกับฉันที่นี่ WP_Query เป็นคลาสที่กำหนดและดึงเนื้อหา จากนั้นวนซ้ำจะผ่านผลลัพธ์ที่ WP_Query ส่งคืน

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

ความแตกต่างระหว่าง have_posts() และ the_post() คืออะไร?

คำถามคลาสสิค! have_posts() ตรวจสอบว่ามีโพสต์เหลืออยู่ในแบบสอบถามที่จะวนซ้ำหรือไม่ มันเหมือนกับถามว่า “เฮ้ มีเพลงในเพลย์ลิสต์นั้นอีกไหม?”

ในขณะเดียวกัน the_post() จะตั้งค่าโพสต์ปัจจุบัน ดังนั้นคุณจึงพร้อมที่จะแสดงรายละเอียดแล้ว มันเหมือนกับการกดปุ่มเล่นในเพลงถัดไป ทั้งสองมีความสำคัญอย่างยิ่งในการเต้นของวง

ฉันจะปรับแต่งโพสต์ที่จะแสดงในลูปได้อย่างไร

อา พลังแห่งการปรับแต่ง! หากต้องการเปลี่ยนโพสต์ที่จะปรากฏ คุณต้องปรับแต่งพารามิเตอร์ WP_Query หรือใช้ตัวกรอง pre_get_posts

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

ฉันสามารถมีหลายลูปในหน้าเดียวได้หรือไม่?

คุณเดิมพัน! การวนซ้ำหลายครั้งเป็นสิ่งที่สำคัญ โดยเฉพาะอย่างยิ่งเมื่อคุณต้องการส่วนที่แตกต่างกัน เช่น รายการบทความหลัก ตามด้วยแถบด้านข้างที่มีโพสต์ล่าสุด

คุณเพียงแค่ต้องรีเซ็ตลูปด้วย wp_reset_postdata() หลังจาก WP_Query ที่กำหนดเองแต่ละรายการ และด้วย ส่วนเทมเพลต ทำให้มีการจัดระเบียบมากยิ่งขึ้น เพียงจำไว้ว่าอย่าหักโหมจนเกินไป ไม่มีใครชอบงานปาร์ตี้ที่ยุ่งวุ่นวาย!

แท็กแบบมีเงื่อนไขในบริบทของลูปคืออะไร

ดังนั้น แท็กแบบมีเงื่อนไข คือผู้เฝ้าประตูของลูป ช่วยให้คุณควบคุมได้ว่าเนื้อหาบางอย่างจะแสดงที่ไหนและเมื่อใด

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

ฉันจะเพิ่มการแบ่งหน้าให้กับลูปได้อย่างไร

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

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

เหตุใดฉันจึงต้องแก้ไขข้อความค้นหาหลัก

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

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

จะเกิดอะไรขึ้นหากมีปัญหากับลูปของฉัน

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

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

จบความคิดเกี่ยวกับ WordPress loop

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

เราไม่แนะนำให้ใช้ฟังก์ชัน query_posts() เว้นแต่ว่าคุณต้องการทดสอบอย่างรวดเร็ว คุณสามารถใช้ hooks ต่างๆ ได้ในกรณีที่คุณต้องการแก้ไขแบบสอบถามต้นฉบับ ควรระมัดระวังเสมอเมื่อเปลี่ยนโค้ดลูปของ WordPress

เราหวังว่าบทความนี้จะเป็นก้าวแรกที่ดีในการเรียนรู้ลูป WordPress ของคุณ!

หากคุณชอบบทความเกี่ยวกับ WordPress loop คุณควรอ่านสิ่งเหล่านี้ด้วย:

  • ข้อผิดพลาด 504 ใน WordPress: วิธีแก้ไข
  • 12 เคล็ดลับในการสร้างปลั๊กอินหรือธีม WordPress พรีเมี่ยมที่ประสบความสำเร็จ
  • วิธีใช้ประโยชน์จากแคชเบราว์เซอร์ใน WordPress? ขั้นตอนที่ต้องปฏิบัติตาม