ค้นหาโพสต์ตาม ID ในผู้ดูแลระบบ


10

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


คุณช่วยอธิบายสิ่งที่คุณหมายถึงการค้นหาด้วย ID ทุกโพสต์มี ID ที่ไม่ซ้ำกันการค้นหานี้อาจทำให้เกิดผลลัพธ์มากกว่าผลลัพธ์เดียวได้อย่างไร
t31os

@ t31os ผลลัพธ์เดียวคือสิ่งที่ฉันต้องการ :) ฉันหมายถึงความสามารถในการค้นหาโพสต์ด้วย ID ในแบ็กเอนด์ผู้ดูแลระบบ หากคุณไปที่domain.com/wp-admin/edit.phpคุณจะพบช่องค้นหาที่ด้านบนสุดและคุณสามารถค้นหาโพสต์ได้อย่างง่ายดายโดยค้นหาจากชื่อบทความ ฉันต้องสามารถทำเช่นเดียวกัน แต่ใช้รหัส สมมติว่าป้อน '1343' กด 'ค้นหา' รับโพสต์ # 1343
pereyra

มันทำงานอย่างไรสำหรับการค้นหาส่วนหน้า?
chrispo

คำตอบ:


13

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

add_action( 'parse_request', 'idsearch' );
function idsearch( $wp ) {
    global $pagenow;

    // If it's not the post listing return
    if( 'edit.php' != $pagenow )
        return;

    // If it's not a search return
    if( !isset( $wp->query_vars['s'] ) )
        return;

    // If it's a search but there's no prefix, return
    if( '#' != substr( $wp->query_vars['s'], 0, 1 ) )
        return;

    // Validate the numeric value
    $id = absint( substr( $wp->query_vars['s'], 1 ) );
    if( !$id )
        return; // Return if no ID, absint returns 0 for invalid values

    // If we reach here, all criteria is fulfilled, unset search and select by ID instead
    unset( $wp->query_vars['s'] );
    $wp->query_vars['p'] = $id;
}

สิ่งที่คุณทำคือการค้นหาโดยใช้ช่องค้นหาปกติโดยใช้#คำนำหน้า (แฮช) ด้านหน้าของ ID ตัวเลข

#123

.. จะส่งคืนโพสต์ด้วย ID 123

ฉันแน่ใจว่ามีเส้นทางที่ซับซ้อนมากขึ้นที่จะต้องทำเช่นนี้ แต่ฉันไม่เห็นปัญหาใด ๆ เกี่ยวกับวิธีการนี้เว้นแต่คุณจะมีบทความจำนวนมากที่มีชื่อที่ขึ้นต้นด้วยแฮช (แต่คุณสามารถสลับแฮชได้เสมอ ตัวละครอื่น)

หวังว่าจะช่วย :)


@ t310s ใช้งานได้ขอบคุณมาก! ปัญหาเดียวที่ฉันได้รับคือที่ด้านบนสุดของผลการค้นหาที่ฉันได้รับ: ผลการค้นหาสำหรับ“” - ในขณะที่ผลการค้นหาสำหรับ“ # 123” จะเหมาะที่สุด มิฉะนั้นนี่คือสิ่งที่ฉันต้องการขอบคุณอีกครั้ง
pereyra

นั่นเป็นผลข้างเคียงที่โชคร้ายของการยกเลิกการตั้งค่าข้อความค้นหาก่อนการสืบค้น แต่ตอนนี้ฉันได้ดู edit.php อีกครั้งฉันสามารถดูการแก้ไขง่าย ๆ ... :) อัปเดตการunset()โทรต่อไปนี้ .. unset( $wp->query_vars['s'], $_GET['s'] );และการค้นหา ข้อความเทอมจะหายไปเมื่อทำการค้นหา ID .. ps ยินดีที่จะช่วย .. :)
t31os

ดึกมากในวันนี้ แต่ฉันสะดุดโพสต์นี้และเป็นไปได้ที่จะเติมผลการค้นหาอีกครั้งสำหรับ ... โดยเชื่อมต่อกับget_search_queryตัวกรอง add_filter( 'get_search_query', function() { return $_GET['s']; } );
Mike
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.