วิธีการใช้คลาส WP_Query ใน WordPress?

เผยแพร่แล้ว: 2024-08-09

สารบัญ
WP_Query คืออะไร?
บันทึกย่อเกี่ยวกับ WP_Query
คุณสามารถใช้ WP_Query ได้อย่างไร
WP_Query Vs query_posts(): อันไหนดีกว่ากัน?
ตัวอย่างการใช้งาน WP_Query บางส่วน
บทสรุป

WP_Query คืออะไร?

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


บันทึกย่อเกี่ยวกับ WP_Query

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

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

แต่คุณต้องแปลกใจที่รู้ว่าด้วยความช่วยเหลือของ WP_Query คุณสามารถสร้างแบบสอบถามที่สามารถช่วยคุณดึงข้อมูลเฉพาะจากฐานข้อมูลของคุณได้ ดังนั้นเมื่อใดก็ตามที่มีคนค้นหาเนื้อหาของคุณ WordPress จะใช้คลาสในตัวนี้

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

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

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

สมมติว่าคุณสร้างเนื้อหาประเภทพิเศษใน WordPress ที่เรียกว่า "บล็อก" หากต้องการแสดงโพสต์ "บล็อก" เหล่านี้บนไซต์ของคุณ คุณสามารถเขียนข้อความค้นหาพิเศษโดยใช้ WP_Query

// WP QUERY
$query = new WP_Query([
'post_type' => 'blog', // Type of content
'posts_per_page' => 6, // Number of posts to show
'category_name' => 'Entertainment' // Category filter
]);

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

WordPress ประมวลผลและจัดรูปแบบแต่ละโพสต์ตามเกณฑ์ที่คุณกำหนดไว้ใน WP_Query (เช่น ประเภทโพสต์ จำนวนโพสต์ และหมวดหมู่)

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


WPOven Dedicated Hosting

คุณสามารถใช้ WP_Query ได้อย่างไร

ตอนนี้คุณรู้แล้วว่า WP_Query คืออะไรและมันทำอะไรกันแน่ ให้เราตรวจสอบสถานการณ์กรณีต่างๆ ที่คุณสามารถใช้เครื่องมืออันทรงพลังนี้ได้

1. สร้างลูปใน WP_Query

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

Loop สามารถแสดงอะไรบนเว็บไซต์ได้บ้าง?

ขึ้นอยู่กับการตั้งค่าที่คุณเลือก ลูปสามารถแสดง:

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

เพื่อความเข้าใจที่ดีขึ้น ด้านล่างนี้คือโครงสร้างอย่างง่ายของ Loop

ตัวอย่างลูปพื้นฐาน

<?php
if ( have_posts() ) :
while ( have_posts() ) : the_post();
// Display post content
endwhile;
endif;
?>

  • ในที่นี้ ฟังก์ชัน have_posts() จะตรวจสอบว่ามีการโพสต์หรือไม่
  • while ( have_posts() ) : the_post(); : หากมีโพสต์ วงนี้จะทำงานสำหรับแต่ละโพสต์และแสดงเนื้อหา

การปรับแต่งลูปด้วย WP_Query

บางครั้งคุณไม่ต้องการแสดงโพสต์ทั้งหมดของคุณ คุณสามารถใช้ WP_Query เพื่อปรับแต่งสิ่งที่จะแสดง:

<?php
// The Query
$the_query = new WP_Query( $args );

// The Loop
if ( $the_query->have_posts() ) {
echo '<ul>';
while ( $the_query->have_posts() ) {
$the_query->the_post();
echo '<li>' . get_the_title() . '</li>';
}
echo '</ul>';
} else {
// No posts found
}
/* Restore original Post Data */
wp_reset_postdata();
?>

วิธีการทำงานของลูปแบบกำหนดเองนี้

  • การตั้งค่าแบบสอบถาม : $the_query = new WP_Query( $args ); สร้างแบบสอบถามที่กำหนดเองตามพารามิเตอร์ที่คุณตั้งไว้ (เช่น ประเภทโพสต์ หมวดหมู่ ฯลฯ)
  • Running the Loop : if ( $the_query->have_posts() ) { ... } ตรวจสอบว่ามีโพสต์ที่ตรงกับข้อความค้นหาของคุณหรือไม่ ถ้ามีก็จะแสดงชื่อของแต่ละโพสต์ในรายการ
  • การรีเซ็ตข้อมูลโพสต์ : wp_reset_postdata(); ตรวจสอบให้แน่ใจว่าข้อมูลโพสต์ต้นฉบับได้รับการกู้คืนหลังจากการวนซ้ำแบบกำหนดเองทำงาน

ตัวเลือกการปรับแต่ง

ด้วย WP_Query คุณสามารถ:

  • แสดงโพสต์จากหมวดหมู่ ผู้เขียน หรือช่วงวันที่ที่ต้องการ
  • แสดงโพสต์พร้อมแท็กหรือฟิลด์ที่กำหนดเอง

2. อาร์กิวเมนต์ WP_Query

เมื่อคุณต้องการรับโพสต์เฉพาะจากไซต์ WordPress ของคุณ คุณต้องสร้าง WP_Query และคุณต้องรวมส่วนพื้นฐานสี่ส่วน:

  • อาร์กิวเมนต์แบบสอบถาม : บอก WordPress ว่าจะดึงข้อมูลใด
  • แบบสอบถาม : ใช้อาร์กิวเมนต์เพื่อดึงข้อมูล
  • The Loop : ประมวลผลและแสดงแต่ละโพสต์
  • โพสต์รีเซ็ตข้อมูล : รีเซ็ตข้อมูลหลังจากการวนซ้ำทำงาน

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

สิ่งสำคัญคือแทนที่จะแสดงโพสต์ทั้งหมด อาร์กิวเมนต์จะกำหนดเงื่อนไขให้แสดงเฉพาะบางโพสต์เท่านั้น

ตัวอย่างของการโต้แย้ง

  • $args Line : นี่คือที่ที่คุณรวมอาร์กิวเมนต์การสืบค้นของคุณ
  • โครงสร้าง : คุณใส่พารามิเตอร์บางตัวลงในอาร์เรย์ นี่เป็นตัวอย่างพื้นฐาน

$args = array(
'parameter1' => 'value',
'parameter2' => 'value',
'parameter3' => 'value'
);

ตัวอย่างเฉพาะ

หากคุณต้องการแสดงบทความที่มีแท็ก 'WordPress Errors' คุณจะต้องตั้งค่าอาร์กิวเมนต์ข้อความค้นหาดังนี้:

$query = new WP_Query( array( 'tag' => 'WordPress Errors' ) );

เหตุใดการโต้แย้งจึงมีความสำคัญ

  • No Argument, No Content : หากคุณไม่ได้ใส่ WP_Query arg ไว้ WordPress จะไม่รู้ว่าจะแสดงโพสต์ไหน ข้อความค้นหาของคุณจะไม่ดึงเนื้อหาใดๆ จากฐานข้อมูล

3. ตั้งค่าพารามิเตอร์ WP_query

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

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

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

ตัวอย่างของพารามิเตอร์ทั่วไป

ต่อไปนี้คือพารามิเตอร์ทั่วไปบางส่วนที่คุณสามารถใช้ได้:

  • cat : แสดงโพสต์จากหมวดหมู่เฉพาะ
  • ผู้แต่ง : แสดงโพสต์โดยผู้เขียนที่ระบุตั้งแต่หนึ่งคนขึ้นไป
  • post_status : แสดงโพสต์ที่กำลังดำเนินการ กำหนดเวลา เผยแพร่ หรือลบแล้ว
  • orderby : จัดเรียงโพสต์ตามผู้เขียน ประเภทโพสต์ วันที่ ฯลฯ
  • posts_per_page : กำหนดจำนวนโพสต์ที่จะแสดง
  • tag : แสดงโพสต์ที่มีแท็กเฉพาะ
  • order : เรียงลำดับโพสต์จากน้อยไปหามากหรือจากมากไปน้อย
  • post_type : กำหนดว่าจะแสดงโพสต์ เพจ หรือประเภทโพสต์ที่กำหนดเอง

วิธีใช้พารามิเตอร์

หากคุณต้องการแสดงโพสต์จากหมวดหมู่ใดหมวดหมู่หนึ่ง คุณสามารถใช้พารามิเตอร์ category_name นี่คือตัวอย่าง:

$query = new WP_Query( array( 'category_name' => 'WordPress' ) );

นี่จะแสดงโพสต์ทั้งหมดในหมวดหมู่ “พนักงาน” และหมวดหมู่ย่อยใดๆ

ตัวอย่างที่ซับซ้อนมากขึ้น

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

เราจะดึงโพสต์ที่อยู่ในหมวดหมู่เฉพาะ มีแท็กบางแท็ก เขียนโดยผู้เขียนเฉพาะ และจัดเรียงตามวันที่โดยเรียงลำดับจากมากไปน้อย

$args = array(
'category__in' => array(5, 10), // Categories with IDs 5 and 10
'tag__in' => array('featured', 'popular'), // Posts tagged with 'featured' or 'popular'
'author__in' => array(1, 2), // Authors with IDs 1 and 2
'orderby' => 'date', // Order by date
'order' => 'DESC', // In descending order
'posts_per_page' => 10 // Limit to 10 posts
);

$query = new WP_Query($args);

// The Loop
if ($query->have_posts()) {
while ($query->have_posts()) {
$query->the_post();
// Display post content
the_title('<h2>', '</h2>');
the_excerpt();
}
} else {
// No posts found
echo 'No posts found';
}

// Restore original Post Data
wp_reset_postdata();

  • Category__in : ช่วยระบุว่าเราต้องการโพสต์จากหมวดหมู่ที่มี ID 5 และ 10
  • tag__in : ระบุว่าเราต้องการโพสต์ที่ติดแท็กด้วย 'แนะนำ' หรือ 'ยอดนิยม'
  • author__in : ระบุว่าเราต้องการโพสต์โดยผู้เขียนที่มี ID 1 และ 2
  • orderby : ระบุว่าเราต้องการเรียงลำดับโพสต์ตามวันที่เผยแพร่
  • order : ระบุว่าเราต้องการให้โพสต์เรียงลำดับจากมากไปน้อย (ใหม่สุดก่อน)
  • posts_per_page : จำกัดจำนวนโพสต์ที่ดึงมาได้ที่ 10

4. แก้ไขวัตถุด้วยวิธีการและคุณสมบัติของคลาส

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

คุณสมบัติและวิธีการของคลาสคืออะไร?

ใน PHP คลาสสามารถมี คุณสมบัติ (เช่น ตัวแปร) และ เมธอด (เช่น ฟังก์ชัน) วิธีทำความเข้าใจง่ายๆ มีดังนี้:

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

คุณสามารถเปลี่ยนคุณสมบัติโดยตรงได้หรือไม่?

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

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

ตัวอย่างการใช้วิธีการใน WP_Query

ในตัวอย่างนี้ ฟังก์ชัน reset_postdata() อาจเป็นขั้นตอนสำคัญในการเขียน WP_Query ของคุณ วิธีนี้จะรีเซ็ตคุณสมบัติของ $current_post และ $post

<?php
// Create a new query with specific arguments
$the_query = new WP_Query(array(
'post_type' => 'post',
'posts_per_page' => 5,
'category_name' => 'news',
));
?>

<?php if ($the_query->have_posts()) : ?>
<!-- Display the posts -->
<?php while ($the_query->have_posts()) : $the_query->the_post(); ?>
<h2><?php the_title(); ?></h2>
<p><?php the_excerpt(); ?></p>
<?php endwhile; ?>
<!-- Reset the post data to avoid conflicts -->
<?php wp_reset_postdata(); ?>
<?php else : ?>
<p><?php _e('Sorry, no posts matched your criteria.'); ?></p>
<?php endif; ?>

ชำรุด:
  • การสร้างแบบสอบถาม :
    • $the_query = new WP_Query($args); : มันสร้างวัตถุ WP_Query ใหม่พร้อมอาร์กิวเมนต์ที่คุณระบุ
  • กำลังตรวจสอบโพสต์ :
    • if ($the_query->have_posts()) : จะตรวจสอบว่ามีโพสต์ใด ๆ ที่จะแสดงตามข้อความค้นหาของคุณ
  • วนลูปผ่านกระทู้ :
    • while ($the_query->have_posts()) : $the_query->the_post(); : มันตั้งค่าข้อมูลการโพสต์เพื่อให้คุณสามารถแสดงได้
  • กำลังแสดงกระทู้ :
    • the_title(); และ the_excerpt(); : จะแสดงชื่อเรื่องและข้อความที่ตัดตอนมาจากโพสต์ปัจจุบัน
  • การรีเซ็ตข้อมูลโพสต์ :
    • wp_reset_postdata(); : จะรีเซ็ตข้อมูลโพสต์ทั่วโลกเป็นโพสต์ของข้อความค้นหาหลัก นี่เป็นสิ่งสำคัญเพื่อหลีกเลี่ยงไม่ให้ส่วนอื่นๆ ของเพจของคุณยุ่งเหยิง

วิธีการทั่วไปที่คุณสามารถใช้ได้

ต่อไปนี้เป็นวิธีการทั่วไปใน WP_Query ที่คุณสามารถใช้เพื่อทำงานกับแบบสอบถามของคุณ:

  • get_posts :
    • ให้ประโยชน์อะไรบ้าง : ดึงรายการโพสต์
    • ตัวอย่าง :โค้ด phpCopy $posts = get_posts(array('category' => 'news'));
  • have_posts :
    • ให้ประโยชน์อะไรบ้าง : ตรวจสอบว่ามีโพสต์ใด ๆ ที่จะแสดงหรือไม่
    • ตัวอย่าง :โค้ด phpCopy if ($the_query->have_posts()) { // There are posts to show }
  • the_post :
    • ให้ประโยชน์อะไรบ้าง : ตั้งค่าข้อมูลโพสต์ปัจจุบัน
    • ตัวอย่าง :โค้ด phpCopy $the_query->the_post();
  • fill_query_vars :
    • ให้ประโยชน์อะไรบ้าง : กรอกรายละเอียดแบบสอบถามที่ขาดหายไป
    • ตัวอย่าง :โค้ด phpCopy $the_query->fill_query_vars($args);

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


WP_Query Vs query_posts(): อันไหนดีกว่ากัน?

ด้านล่างนี้เป็นตารางเปรียบเทียบโดยละเอียดของ WP_Query กับ query_posts() ใน WordPress รวมถึงประเด็นหลักบางส่วนที่สามารถช่วยให้คุณเข้าใจว่าทำไม WP_Query จึงเป็นที่นิยมมากกว่า query_posts() :

คุณสมบัติ WP_Query query_posts()
วัตถุประสงค์ สร้างแบบสอบถามที่กำหนดเองสำหรับการดึงโพสต์จากฐานข้อมูล แก้ไขคำถามหลักบนเพจ (ไม่แนะนำสำหรับการใช้งานทั่วไป)
การใช้งานหลัก เหมาะอย่างยิ่งสำหรับการสร้างข้อความค้นหาใหม่และแสดงโพสต์ด้วยวิธีที่กำหนดเอง โดยทั่วไปใช้เพื่อแก้ไขข้อความค้นหาหลัก แต่ไม่แนะนำ
การใช้งานที่แนะนำ ใช่ นี่เป็นวิธีที่แนะนำในการดึงข้อมูลและแสดงโพสต์ ไม่ ทางที่ดีควรหลีกเลี่ยงการใช้ฟังก์ชันนี้ภายในลูปหลัก ปลั๊กอิน และธีม
ผลกระทบต่อแบบสอบถามหลัก ไม่ส่งผลกระทบต่อแบบสอบถามหลัก คุณสามารถเรียกใช้การสืบค้นแบบกำหนดเองได้โดยไม่ต้องเปลี่ยนลูปหลัก แทนที่คำค้นหาหลักโดยสมบูรณ์ ซึ่งอาจทำให้เกิดข้อขัดแย้งหรือผลลัพธ์ที่ไม่คาดคิด
การรีเซ็ตข้อมูลโพสต์ ใช้ wp_reset_postdata() เพื่อคืนค่าการสืบค้นดั้งเดิมหลังจากเรียกใช้การสืบค้นแบบกำหนดเอง ไม่มีฟังก์ชันที่เทียบเท่ากัน ซึ่งหมายความว่าคุณอาจต้องกู้คืนข้อมูลโพสต์ของข้อความค้นหาหลักด้วยตนเอง
การจัดการแบบสอบถามหลายรายการ สามารถจัดการคำถามได้หลายข้อและได้รับการออกแบบมาสำหรับสถานการณ์ที่ซับซ้อน จัดการเพียงแบบสอบถามเดียวและเปลี่ยนแปลงแบบสอบถามหลัก ซึ่งอาจเป็นปัญหาสำหรับหลายแบบสอบถาม
ผลกระทบต่อประสิทธิภาพ โดยทั่วไปแล้วจะดีกว่าสำหรับประสิทธิภาพเนื่องจากไม่ได้เปลี่ยนแปลงแบบสอบถามหลัก อาจมีประสิทธิภาพน้อยลงและอาจทำให้เกิดปัญหาเนื่องจากผลกระทบต่อการสืบค้นหลัก
ตัวอย่างแบบสอบถามที่กำหนดเอง $custom_query = new WP_Query(array('post_type' => 'post', 'posts_per_page' => 5)); query_posts(array('post_type' => 'post', 'posts_per_page' => 5));
ตัวอย่างการรีเซ็ตข้อมูล <?php wp_reset_postdata(); ?> ไม่มีฟังก์ชันรีเซ็ต จำเป็นต้องรีเซ็ตด้วยตนเองหากมีการเปลี่ยนแปลงแบบสอบถามหลัก
สะดวกในการใช้ ใช้งานง่ายด้วยวิธีการและฟังก์ชันในตัวสำหรับการสืบค้นโพสต์และเพจ ตรงไปตรงมาน้อยลงและอาจนำไปสู่ปัญหาได้หากไม่ใช้อย่างระมัดระวัง
WP_Query กับ query_posts()

WPOven Dedicated Hosting

ตัวอย่างการใช้งาน WP_Query บางส่วน

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

1. แสดงโพสต์ล่าสุดที่เผยแพร่ในสัปดาห์นี้

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

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

<?php
$arguments = array(
"date_query" => array(
array(
"year" => date( "Y" ),
"week" => date( "W" ),
)
)
);
$posts = new WP_Query($arguments);
?>

ในตัวอย่างนี้ เราสร้าง WP_Query เพื่อค้นหาโพสต์ที่เผยแพร่ในสัปดาห์ปัจจุบัน เราใช้ส่วนพิเศษของ WP_Query ที่เรียกว่า date_query เพื่อระบุเกณฑ์การค้นหาของเรา

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

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


2. แสดงโพสต์ล่าสุดในหมวดหมู่เฉพาะ

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

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

ตัวอย่างเช่น หากมีคนอ่านบทความเกี่ยวกับข้อผิดพลาดของ WordPress WP_Query สามารถช่วยแสดงบทความอื่นๆ ที่คล้ายกันและล่าสุดได้

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

<?php

// Get the current post id.
$current_post_id = get_the_ID();

// Get the current post's category (first one if there's more than one).
$current_post_cats = get_the_category();
$current_post_first_cat_id = $current_post_cats[ 0 ]->term_id;

// Setup arguments.
$args = array(
// Get category's posts.
'cat' => $current_post_first_cat_id,
// Exclude current post.
'post__not_in' => array( $current_post_id )
);

// Instantiate new query instance.
$my_query = new WP_Query( $args );

?>


3. แสดงโพสต์โดยผู้เขียนคนเดียวกันและอยู่ในหมวดหมู่เดียวกัน

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

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

สำหรับสิ่งนี้ เราต้องสร้างสตริง WP_Query เฉพาะซึ่งจะมองหาโพสต์ที่มีผู้เขียนคล้ายกันและหมวดหมู่เดียวกัน

นี่คือรหัส:

<?php
$arguments = array(
"author_name" => "Rahul",
"category_name" => "WordPress",
"posts_per_page" => 3,
);
$posts = new WP_Query($arguments);
?>

ในโค้ดด้านบน คุณต้องแทนที่ “Rahul” ด้วยชื่อผู้เขียน และแทนที่ “WordPress” ด้วยชื่อหมวดหมู่


4. แสดงโพสต์ยอดนิยมของคุณ

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

<?php
$arguments = array(
"category_name" => "WordPress Errors",
"orderby" => "comment_count",
"posts_per_page" => 5,
);
$posts = new WP_Query($arguments);
?>

WP_Query ด้านบนจะค้นหาโพสต์ในหมวดหมู่ "ข้อผิดพลาด WordPress" และกรองผลลัพธ์ตามจำนวนความคิดเห็นที่แต่ละโพสต์มี

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


บทสรุป

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

หากต้องการใช้ WP_Query คุณสามารถ:

  • สร้างวง: แสดงโพสต์ของคุณ
  • ใช้อาร์กิวเมนต์แบบสอบถาม: ปรับแต่งการค้นหาของคุณ
  • ตั้งค่าพารามิเตอร์เฉพาะ: กรองผลลัพธ์ของคุณ
  • แก้ไขคุณสมบัติของคลาส: ปรับผลลัพธ์การสืบค้นด้วยวิธีการ

หากคุณเชี่ยวชาญเทคนิคเหล่านี้ทั้งหมดแล้ว คุณจะสามารถแนะนำโพสต์ที่เฉพาะเจาะจงโดยพิจารณาจากปัจจัยต่างๆ เช่น ความนิยมและวันที่ได้อย่างง่ายดาย

เทคนิคนี้จะช่วยเพิ่มการมีส่วนร่วมของผู้ใช้ ปรับปรุงประสบการณ์ผู้ใช้ และยังช่วยให้ผู้เยี่ยมชมประจำของคุณค้นพบเนื้อหาที่เกี่ยวข้องมากขึ้น

หากคุณยังคงมีข้อสงสัยเกี่ยวกับ WP_Query หรือต้องการเพิ่มเนื้อหาเพิ่มเติมที่เราอาจพลาดไป โปรดแจ้งให้เราทราบในส่วนความคิดเห็นด้านล่าง