วิธีการใช้คลาส WP_Query ใน WordPress?
เผยแพร่แล้ว: 2024-08-09WP_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 แสดงเนื้อหาได้อย่างง่ายดายโดยไม่ต้องเขียนคำสั่งฐานข้อมูลที่ซับซ้อน
คุณสามารถใช้ 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 บางส่วน
เพื่อทำความเข้าใจ 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 หรือต้องการเพิ่มเนื้อหาเพิ่มเติมที่เราอาจพลาดไป โปรดแจ้งให้เราทราบในส่วนความคิดเห็นด้านล่าง
Rahul Kumar เป็นผู้ชื่นชอบเว็บไซต์และเป็นนักยุทธศาสตร์ด้านเนื้อหาที่เชี่ยวชาญด้าน WordPress และเว็บโฮสติ้ง ด้วยประสบการณ์หลายปีและความมุ่งมั่นในการติดตามแนวโน้มของอุตสาหกรรม เขาจึงสร้างกลยุทธ์ออนไลน์ที่มีประสิทธิภาพที่กระตุ้นการเข้าชม เพิ่มการมีส่วนร่วม และเพิ่ม Conversion ความใส่ใจในรายละเอียดและความสามารถในการสร้างสรรค์เนื้อหาที่น่าสนใจของ Rahul ทำให้เขาเป็นทรัพย์สินที่มีค่าสำหรับแบรนด์ใดๆ ก็ตามที่ต้องการปรับปรุงการนำเสนอตัวตนในโลกออนไลน์