Tìm kiếm bài viết bằng ID trong quản trị viên


10

Tôi đang tìm cách để tìm kiếm thông qua các bài đăng bằng ID, tốt nhất là có hỗ trợ cho các loại bài đăng tùy chỉnh. Tôi đã hy vọng sẽ có một plugin kích hoạt chức năng này, nhưng tôi đã không tìm thấy gì. Bất kỳ ý tưởng sẽ được đánh giá rất cao, cảm ơn bạn.


Bạn có thể giải thích những gì bạn có nghĩa là tìm kiếm theo ID, mỗi bài đăng có một ID duy nhất, làm thế nào tìm kiếm này có thể mang lại nhiều hơn một kết quả không?
t31os

@ t31os Một kết quả duy nhất là những gì tôi muốn :). Tôi đang đề cập đến việc có thể tìm kiếm các bài đăng bằng ID trong phần phụ trợ quản trị viên. Nếu bạn truy cập domain.com/wp-admin/edit.php, bạn có trường tìm kiếm ở trên cùng và bạn có thể dễ dàng xác định vị trí bài đăng bằng cách tìm kiếm thông qua tiêu đề bài đăng. Tôi cần có thể làm như vậy, nhưng sử dụng ID. Nói, nhập '1343', nhấn 'tìm kiếm', nhận bài # 1343.
pereyra

Làm thế nào nó hoạt động cho tìm kiếm frontend?
chrispo

Câu trả lời:


13

Không chắc chắn tôi hiểu lý do tại sao bạn muốn truy vấn bằng ID, nhưng điều đó nói rằng nó có thể theo một cách thức khó khăn (tôi thích phương pháp này vì nó đơn giản).

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;
}

Tất cả những gì bạn làm là tìm kiếm bằng hộp tìm kiếm thông thường bằng cách sử dụng #tiền tố (băm) trước ID số.

#123

..có thể trả lại bài đăng với ID là 123.

Tôi chắc chắn có nhiều tuyến đường phức tạp hơn có thể được thực hiện để làm điều này, nhưng tôi không thấy bất kỳ vấn đề nào với cách tiếp cận này, trừ khi bạn có nhiều bài đăng với tiêu đề bắt đầu bằng hàm băm (nhưng bạn luôn có thể trao đổi hàm băm cho nhân vật khác).

Mong rằng sẽ giúp. :)


@ t 310s này hoạt động, cảm ơn bạn rất nhiều! Vấn đề duy nhất (mặc dù hoàn toàn là mỹ phẩm) tôi nhận được là ở đầu kết quả tìm kiếm mà tôi nhận được: Kết quả tìm kiếm cho Vượt - trong khi kết quả Tìm kiếm cho Nhà # 123 Tấn là lý tưởng. Nếu không, đây chính xác là những gì tôi cần, cảm ơn một lần nữa.
pereyra

Đó là một tác dụng phụ đáng tiếc của việc bỏ đặt cụm từ tìm kiếm ngay trước truy vấn, nhưng bây giờ tôi đã có một cái nhìn khác về edit.php tôi có thể thấy một sửa chữa dễ dàng ... :) Cập nhật unset()cuộc gọi đến sau .. unset( $wp->query_vars['s'], $_GET['s'] );và tìm kiếm thuật ngữ văn bản sẽ biến mất khi thực hiện tìm kiếm ID .. ps vui lòng giúp đỡ .. :)
t31os

Rất muộn trong ngày nhưng tôi tình cờ thấy bài đăng này và có thể nhập lại kết quả Tìm kiếm cho ... bằng cách nối vào get_search_querybộ lọc. add_filter( 'get_search_query', function() { return $_GET['s']; } );
Mike
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.