Шукати повідомлення за ідентифікатором в адміністраторі


10

Я шукаю спосіб пошуку публікацій за ідентифікатором, бажано з підтримкою користувацьких типів публікацій. Я сподівався, що буде плагін, що дозволяє цю функціональність, але мені нічого не вдалося знайти. Будь-які ідеї будуть дуже вдячні, дякую.


Чи можете ви пояснити, що ви маєте на увазі пошук за ідентифікатором, кожен пост має унікальний ідентифікатор, як цей пошук, можливо, дасть більше одного результату?
t31о

@ t31os Єдиний результат - це те, що я хочу :). Я маю на увазі можливість перегляду публікацій за ідентифікатором в адміністративному сервісі. Якщо ви перейдете до domain.com/wp-admin/edit.php, у верхній частині ви маєте поле пошуку, і ви зможете легко знайти публікацію шляхом пошуку за заголовками публікацій. Мені потрібно вміти робити те ж саме, але за допомогою ідентифікаторів. Скажімо, введіть "1343", натисніть "Пошук", отримайте повідомлення № 1343.
перейра

як це працює для пошуку за кордоном?
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;
}

Все, що ви робите, це пошук за допомогою звичайного поля пошуку, використовуючи #(хеш) префікс перед числовим ідентифікатором.

#123

..повернув би повідомлення з ідентифікатором 123.

Я впевнений, що для цього можна скористатися більш складними маршрутами, але я не бачу жодних проблем із таким підходом, якщо у вас є безліч публікацій із заголовками, які починаються з хешу (але ви завжди можете поміняти хеш на інший персонаж).

Сподіваюся, що це допомагає. :)


@ t310s це працює, дуже дякую! Єдине (хоча чисто косметичне) питання, яке я отримую, - це те, що у верхній частині результатів пошуку я отримую: Результати пошуку для "" - тоді як результати пошуку для "# 123" були б ідеальними. Інакше це саме те, що мені було потрібно, ще раз дякую.
перейра

Це невдалий побічний ефект від встановлення пошукових термінів безпосередньо перед запитом, але тепер у мене був ще один погляд на edit.php, я можу побачити просте виправлення ... :) Оновіть unset()дзвінок на наступне .. unset( $wp->query_vars['s'], $_GET['s'] );та пошук Текст терміна зникне під час пошуку ідентифікатора .. ps із задоволенням допоможе .. :)
t31з

Дуже пізно вдень, але я наткнувся на цю посаду, і можна повторно заповнити результати пошуку за ..., зачепившись у get_search_queryфільтр. add_filter( 'get_search_query', function() { return $_GET['s']; } );
Майк
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.