WordPress: วิธีจัดเรียงโพสต์ประเภทโพสต์ที่คุณกำหนดเองตามตัวอักษร
ด้วยธีมใหม่ (และธีมลูก) ที่ฉันนำมาใช้ Martech Zoneฉันต้องสร้างและรีโค้ดประเภทโพสต์ที่กำหนดเองที่ฉันสร้างขึ้นใหม่ คำย่อ. ฉันปรับโค้ดให้เหมาะสมเพื่อแทรกฟิลด์ที่กำหนดเองเพิ่มเติม และฉันต้องออกแบบเทมเพลตไฟล์เก็บถาวรและอนุกรมวิธานใหม่เพื่อให้แสดงคำย่อที่อยู่ในรายการได้ดียิ่งขึ้น
ในธีมล่าสุดของฉัน (ซึ่งผู้พัฒนาเลิกสนับสนุน) หน้าเหล่านี้ค่อนข้างได้รับความสนใจเพราะมีการจัดทำเอกสารไว้อย่างดีและยังแสดงบทความที่เกี่ยวข้องกับตัวย่อด้วย ฉันจะย้ายฟังก์ชันดังกล่าวไปยังไซต์ใหม่ต่อไป และฉันยังต้องการใช้วิธีโฮเวอร์เพื่อแสดงคำจำกัดความของตัวย่อ แทนที่จะให้ผู้เยี่ยมชมคลิกลิงก์ตัวย่อ พอเกี่ยวกับเรื่องนั้น…
การเรียงลำดับประเภทโพสต์แบบกำหนดเอง
เนื่องจากเดิมที WordPress ได้รับการออกแบบมาสำหรับการใช้งานบล็อก ค่าเริ่มต้นของประเภทโพสต์ใดๆ (รวมถึงประเภทโพสต์ที่กำหนดเอง) คือการเรียงลำดับโพสต์ตามลำดับเวลาย้อนกลับ แม้ว่าจะใช้ได้กับข่าวและบทความ แต่ก็ไม่มีประโยชน์สำหรับสิ่งต่างๆ เช่น อภิธานศัพท์หรือรายการคำย่อ ฉันต้องการให้ตัวย่อของฉันจัดเรียงตามตัวอักษรและตัวเลข ไม่ใช่ตามวันที่ที่ป้อนใน WordPress
เช่นเดียวกับฟีเจอร์แทบทุกอย่างใน WordPress สิ่งนี้สามารถปรับแต่งได้อย่างง่ายดายด้วย WordPress API ในของฉัน functions.php ไฟล์ในธีมลูกของฉัน ฉันได้เพิ่มรหัสต่อไปนี้:
add_action( 'pre_get_posts', function ( $query ) {
if ( $query->is_archive() && $query->is_main_query() ) {
if ( get_query_var( 'post_type' ) == 'acronym' ) {
$query->set( 'order', 'ASC' );
$query->set( 'orderby', 'title' );
};
};
} );
พื้นที่ pre_get_posts ฟังก์ชันคือการดำเนินการที่ดำเนินการเมื่อใดก็ตามที่โพสต์ถูกสอบถาม ในโค้ดด้านบนนี้ ฉันมั่นใจได้ว่าข้อความค้นหาใดๆ สำหรับ ประเภทโพสต์ที่กำหนดเอง of อักษรย่อ กำหนดให้เรียงตามชื่อเรื่องจากน้อยไปหามากโดยเฉพาะ
สิ่งนี้ไม่เพียงแค่ตั้งค่าลำดับนี้ในผลลัพธ์ของหน้าเก็บถาวรและการจัดหมวดหมู่เท่านั้น แต่ยังสั่งประเภทโพสต์ที่กำหนดเองตามตัวอักษรและตัวเลขภายในแผงการดูแลระบบของ WordPress
เนื่องจากคุณกำลังตั้งค่าพารามิเตอร์การค้นหาเริ่มต้น คุณจึงสามารถเพิ่มตัวแปรอื่นๆ ได้เช่นกัน เช่น จำนวนระเบียนที่จะดึงข้อมูล (
posts_per_page). สำหรับคำย่อ ฉันจะส่งคืนระเบียนครั้งละ 25 รายการโดยที่ฉันใช้ค่าเริ่มต้นเป็น 10 รายการในส่วนที่เหลือของไซต์หากคุณต้องการเพียงเผยแพร่ประเภทโพสต์ที่กำหนดเองตามตัวอักษรในเทมเพลตที่เก็บถาวรของคุณ แต่ไม่ต้องการเผยแพร่ในแผงการดูแลระบบ WordPress คุณสามารถอัปเดตโค้ดนั้นเป็น:
function acronym_archive_orderby_title($query) {
// Check if it's the main query, an archive page, and the post type is 'acronym'
if ($query->is_main_query() && is_post_type_archive('acronym') && !is_admin()) {
// Order by title alphabetically
$query->set('orderby', 'title');
$query->set('order', 'ASC');
}
}
add_action('pre_get_posts', 'acronym_archive_orderby_title');
ประเภทโพสต์ที่กำหนดเองสามารถช่วยคุณขยายขีดความสามารถของไซต์ของคุณได้อย่างมาก... และทั้งหมดนี้สามารถทำได้ด้วยโค้ดง่ายๆ ภายในธีมลูกของคุณ (หรือธีมหลัก) โดยไม่จำเป็นต้องใช้ปลั๊กอินใดๆ อันที่จริง ฉันไม่แนะนำให้ใช้ปลั๊กอิน เนื่องจากปลั๊กอินมักจะเพิ่มค่าใช้จ่ายในการประมวลผลซึ่งอาจทำให้ไซต์ของคุณช้าลง ตอนนี้ฉันกำลังทำงานในไซต์ของลูกค้าซึ่งพวกเขาต้องการรวมตำแหน่งงานที่เปิดรับสมัคร… และรหัสนี้จะมีประโยชน์สำหรับพวกเขาเช่นกัน!