Я ищу способ поиска по записям по идентификатору, желательно с поддержкой пользовательских типов сообщений. Я надеялся, что будет плагин, включающий эту функцию, но я не смог ничего найти. Любые идеи будут с благодарностью, спасибо.
Я ищу способ поиска по записям по идентификатору, желательно с поддержкой пользовательских типов сообщений. Я надеялся, что будет плагин, включающий эту функцию, но я не смог ничего найти. Любые идеи будут с благодарностью, спасибо.
Ответы:
Не уверен, что понимаю, почему вы хотите сделать запрос по идентификатору, но это говорит о том, что это возможно хакерским способом (мне нравится этот метод, потому что он прост).
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.
Я уверен, что есть более сложные маршруты, которые могут быть использованы для этого, но я не вижу никаких проблем с этим подходом, если у вас нет много постов с заголовками, которые начинаются с хэша (но вы всегда можете поменять хэш на другой персонаж).
Надеюсь, это поможет. :)
unset()
вызов до следующего ... unset( $wp->query_vars['s'], $_GET['s'] );
и поиска Термин текст исчезнет при выполнении поиска по идентификатору .. PS с радостью помогу .. :)
get_search_query
фильтру. add_filter( 'get_search_query', function() { return $_GET['s']; } );