Получение ссылки для поиска в WordPress (GET_SEARCH_LINK)
Функция get_search_link() используется для получения постоянной ссылки (permalink) для страницы поиска. Это означает, что с её помощью мы можем создавать ссылки на результаты поиска на нашем сайте.
Как работает функция
Функция использует другую функцию get_search_query(), чтобы получить строку запроса для поиска. Производительность её работы очень высокая: выполнение занимает примерно 0.000102 секунды, а при многократном вызове (50,000 раз) — около 2.75 секунды.
Хуки
Функция использует хук search_link, который позволяет изменять результирующую ссылку.
Возвращаемое значение
Функция возвращает строку, которая содержит ссылку для поиска.
Использование функции
get_search_link( $query );
Параметры
$query(строка): строка запроса для поиска. Если параметр пустой, используется текущий запрос. Значение по умолчанию: пустая строка ('').
Примеры использования
Пример 1: Получение ссылки на страницу поиска с запросом
echo get_search_link( 'что-то' );
// http://example.com/search/что-то
Пример 2: Получение ссылки на страницу поиска с запросом, содержащим специальные символы
echo get_search_link( 'foo " bar' );
// http://example.com/search/foo+%22+bar
Напоминание
Функция использует глобальный объект WP_Rewrite. Этот объект отвечает за создание структуры URL для различных типов контента в WordPress.
Изменения в версии
Функция была введена в версии 3.0.0.
Полный код функции
Вот код функции get_search_link(), который находится в файле link-template.php:
function get_search_link( $query = '' ) {
global $wp_rewrite;
if ( empty( $query ) ) {
$search = get_search_query( false );
} else {
$search = stripslashes( $query );
}
$permastruct = $wp_rewrite->get_search_permastruct();
if ( empty( $permastruct ) ) {
$link = home_url( '?s=' . urlencode( $search ) );
} else {
$search = urlencode( $search );
$search = str_replace( '%2F', '/', $search ); // Заменяем %2F на /, чтобы не было ошибок в URL
$link = str_replace( '%search%', $search, $permastruct );
$link = home_url( user_trailingslashit( $link, 'search' ) );
}
/**
* Фильтрует ссылку поиска.
*
* @since 3.0.0
*
* @param string $link Ссылка для поиска.
* @param string $search Закодированная строка поиска.
*/
return apply_filters( 'search_link', $link, $search );
}
Связанные функции
Функция get_search_link() работает вместе с другими функциями для построения URL. Вот некоторые из них:
admin_url()attachment_url_to_postid()build_query()get_home_url()url_to_postid()
Эти функции могут быть полезны, если вы хотите работать с URL-адресами в WordPress.