Cari posting berdasarkan ID di admin

10

Saya sedang mencari cara untuk mencari melalui posting dengan ID, lebih disukai dengan dukungan untuk jenis posting khusus. Saya berharap akan ada plugin yang mengaktifkan fungsi ini, tetapi saya gagal menemukan apa pun. Setiap ide akan sangat dihargai, terima kasih.

pereyra
sumber
Bisakah Anda menjelaskan apa yang Anda maksud dengan pencarian ID, setiap posting memiliki ID unik, bagaimana mungkin pencarian ini menghasilkan lebih dari satu hasil?
t31os
@ t31os Hasil tunggal adalah yang saya inginkan :). Saya merujuk untuk dapat mencari posting dengan ID di admin backend. Jika Anda masuk ke domain.com/wp-admin/edit.php Anda memiliki bidang pencarian di bagian atas, dan Anda dapat dengan mudah menemukan posting dengan mencari melalui judul posting. Saya harus dapat melakukan hal yang sama, tetapi menggunakan ID. Katakan, masukkan '1343', tekan 'cari', dapatkan posting # 1343.
pereyra
bagaimana cara kerjanya untuk pencarian frontend?
chrispo

Jawaban:

13

Tidak yakin saya mengerti mengapa Anda ingin melakukan query dengan ID, tetapi itu mengatakan bahwa itu mungkin dalam cara hacky (saya suka metode ini karena itu sederhana).

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

Yang Anda lakukan hanyalah mencari menggunakan kotak pencarian biasa menggunakan #awalan (hash) di depan ID numerik.

#123

..akan mengembalikan pos dengan ID 123.

Saya yakin ada rute yang lebih rumit yang dapat diambil untuk melakukan ini, tetapi saya tidak melihat ada masalah dengan pendekatan ini, kecuali jika Anda memiliki banyak posting dengan judul yang dimulai dengan hash (tetapi Anda selalu dapat menukar hash dengan karakter lain).

Semoga itu bisa membantu. :)

t31os
sumber
@ t310 ini berfungsi, terima kasih banyak! satu-satunya masalah (walaupun murni kosmetik) yang saya dapatkan adalah bahwa di bagian atas hasil pencarian yang saya dapatkan: Hasil pencarian untuk "" - sedangkan hasil Pencarian untuk "# 123" akan ideal. Kalau tidak, inilah tepatnya yang saya butuhkan, terima kasih lagi.
pereyra
Itu adalah efek samping yang disayangkan dari membatalkan pengaturan istilah pencarian sebelum permintaan, tetapi sekarang saya sudah melihat lagi di edit.php saya dapat melihat perbaikan yang mudah ... :) Perbarui unset()panggilan ke yang berikut .. unset( $wp->query_vars['s'], $_GET['s'] );dan pencarian teks istilah akan hilang ketika melakukan pencarian ID .. ps senang membantu .. :)
t31os
Sangat terlambat pada hari itu tetapi saya sengaja menemukan posting ini dan dimungkinkan untuk mengisi kembali hasil Pencarian untuk ... dengan menghubungkan ke get_search_queryfilter. add_filter( 'get_search_query', function() { return $_GET['s']; } );
Mike