W tym poradniku dowiesz się jak wyłączyć w WordPress funkcję wyszukiwania w sytuacji, gdy z niej nie korzystasz. Ten prosty w użyciu sposób pozwoli Ci ograniczyć możliwość przeszukiwania strony internetowej przez odwiedzające ją osoby oraz roboty internetowe. Ponadto wyłączając wyszukiwanie w WordPress dodatkowo zabezpieczysz swoją stronę przed atakami polegającymi na przeciążeniu bazy danych MySQL. Wszystkie wskazówki i informacje na ten temat znajdziesz poniżej.
Jak działa funkcja wyszukiwania w WordPress
Zacznijmy na początku od tego jak działa funkcja wyszukiwania w WordPress i do czego ona w ogóle służy. System CMS WordPress, ma bowiem wbudowaną możliwość przeszukiwania w bazie danych postów, czyli takich treści, które możemy za jego pośrednictwem dodawać chociażby w zakładce Wpisy. Domyślna funkcjonalność wyszukiwania treści w WordPress działa w bardzo prosty sposób polegający na dodaniu do adresu URL parametru s
[search] z wartością zawierającą wyszukiwaną frazę.
Korzystanie z wyszukiwania WordPress jest zazwyczaj dostępne poprzez widoczne na stronie internetowej pole, która umożliwia wpisanie frazy kluczowej, która zostanie następnie przekazana do strony z wynikami. Poniżej znajduje się przykładowy parametr URL, który zostanie wygenerowany po przesłaniu formularza wyszukiwania z frazą wordpress:
?s=wordpress
Aby jednak skorzystać z wyszukiwania WordPress nie musisz mieć dostępu do wspomnianego wcześniej pola, a wystarczy jedynie, że dodasz do adresu dowolnej strony internetowej wspomniany parametr z dowolną wartością. W ten sposób możliwe staje się przeszukiwanie całej strony internetowej WordPress pod kątem konkretnego słowa. Poniżej zamieszczam przykład takiego właśnie adresu URL, gdyby dotyczyło to naszej strony internetowej:
https://siriuspro.pl/?s=wordpress
W tym przypadku cały blog Sirius Pro, a zatem cała baza danych, a dokładnie tabela {prefix}_posts
, gdzie {prefix}
to prefiks bazy danych [domyślnie wp] zostałaby przeszukana właśnie pod kątem frazy wordpress znajdującej się w tytule lub treści posta. Co jednak stanie się, gdy wywołasz ten adres URL na naszej stronie WordPress? Zupełnie nic, ale o tym jak wyłączyć wyszukiwanie WordPress napiszemy nieco dalej 🤓
Możliwość takiego przeszukiwania systemu może okazać się więc bardzo przydatna na stronach, które korzystają z tej funkcjonalności i ma ona wartość dodaną dla ich użytkowników. Warunkiem jednak koniecznym do jej prawidłowego działania jest oczywiście możliwość wyświetlania wyników, które odbywa się zazwyczaj na dedykowanej do tego podstronie. Oznacza to, że choć funkcjonalność wyszukiwania w WordPress jest domyślnie włączona, to jednak potrzebujesz do jej pełnej obsługi motyw, a dokładniej szablon WordPress, który pozwoli zaprezentować znalezione treści. Funkcja ta jest jednak wspierana przez praktycznie większość płatnych, jak i darmowych motywów, dlatego jeżeli naprawdę jej potrzebujesz, to możesz w tym momencie zakończyć czytanie tego poradnika.
A co jeżeli jednak nie potrzebujesz tej funkcjonalności lub wręcz nie chcesz, aby użytkownicy mieli możliwość przeszukiwania Twojej strony internetowej? Wtedy pojawia się problem, ponieważ system WordPress sam w sobie nie posiada opcji pozwalającej na zarządzane stanem funkcji wyszukiwania. Z tego względu niedoświadczony administrator WordPress może być nawet nieświadomy tego, że jego strona pozwala na takie działanie.
Należy tutaj jednak podkreślić, że:
Jeżeli motyw nie posiada szablonu strony wyszukiwania w pliku search.php to po wywołaniu takiego adresu URL pojawi się strona najczęściej pusta strona index.php.
Jednak jak już wspomniałem, większość motywów posiada ten plik, a nawet jeżeli tak nie jest to należy wiedzieć, że każdorazowe wywołanie adresu url z parametrem s=wordpress
będzie skutkować skanowaniem całej bazy danych MySQL. A teraz wyobraź sobie, że na Twojej stronie internetowej w ciągu jednej sekundy zostanie wykonanych takich 1000 zapytań podczas, gdy zazwyczaj serwer WordPress jest w stanie w jednym momencie obsłużyć ich co najwyżej kilkaset. Bardzo dobrze by się stało, gdyby Twoja strona internetowa w takiej sytuacji bardzo spowolniła lub na chwilę przestała działać. Istnieje jednak duże prawdopodobieństwo, że zbyt duża ilość jednoczesnych zapytań do bazy danych spowoduje tak długą kolejkę, że serwer MySQL zostanie przeciążony i przestanie całkowicie odpowiadać do czasu jego ręcznego resetu, co może wyłączyć stronę z użycia na bardzo długi czas.
Pozostawienie więc funkcji wyszukiwania w WordPress stanowi więc pewnego rodzaju zagrożenie, szczególnie jeżeli nie korzystasz z usług takich jak CloudFlare, które pozwalają zabezpieczyć stronę przed atakami typu DDoS [Distributed Denial of Service]. Z własnego doświadczenia wiem jednak, że większość stron internetowych nie potrzebuje funkcji wyszukiwania, a tylko w niektórych przypadkach warto ją udostępnić swoim użytkownikom.
Warto także wspomnieć o tym, że najpopularniejsze roboty internetowe takie jak Googlebot doskonale radzą sobie z przeszukiwaniem stron WordPress, w tym także wykorzystaniem znanych im parametrów takich jak właśnie s
. Z tego względu wyłączenie wyszukiwania w sytuacji, gdy z tej funkcji nie korzystasz może pozytywnie wpłynąć na pozycjonowanie strony WordPress.
Teraz przejdźmy więc do tego jak całkowicie wyłączyć wyszukiwanie WordPress na swojej stronie internetowej 🤓
Jak wyłączyć wyszukiwanie WordPress
Na samym początku wspomnę tylko, aby nie korzystać w tym przypadku z wtyczek, ponieważ same w sobie mogą one obciążać system oraz zwiększać jego podatność na wszelkiego rodzaju ataki. Aby całkowicie wyłączyć wyszukiwanie w WordPress wystarczy dodać nasz autorski kod do pliku functions.php znajdującego się w aktualnie używanym motywie.
Zastosowanie poniższego kodu nie wpłynie na możliwość korzystania z własnej wyszukiwarki na stronie WordPress tak jak w przypadku naszej strony Sirius Pro.
Aby wyłączyć wyszukiwanie w WordPress otwórz więc serwer FTP i przejdź do folderu zawierającego pliki aktualnie używanego motywu. Ścieżka może wyglądać następująco:
/public_html/wp-content/themes/twentytwentythree/
Jeżeli nie posiadasz własnego, dedykowanego motywu to skorzystaj z Child Theme, aby po jego aktualizacji nie utracić tych zmian. Teraz otwórz znajdujący się tam plik functions.php i dokonaj jego edycji dodając na samym początku każdy z poniższych kodów.
1. Wyłącz stronę wyszukiwania WordPress
Jeżeli chcesz wyłączyć wyszukiwarkę WordPress dodaj kod, który widzisz poniżej. Całkowicie uniemożliwi on korzystanie ze strony oraz parametru wyszukiwania oraz przekieruje wszelkie próby na stronę główną.
function siriuspro_search_disable( $query, $error = true ) { if ( is_search() ) { $query->is_search = false; $query->query_vars['s'] = false; $query->query['s'] = false; if ( $error === true ) { $query->is_404 = true; wp_redirect( home_url() ); exit; } } } add_action( 'parse_query', 'siriuspro_search_disable' );
2. Wyłącz formularz wyszukiwania WordPress
Kod, który widzisz poniżej pozwala na wyłączenie obsługi formularza wyszukiwania na stronie WordPress w sytuacji jeżeli byłby on widoczny dla użytkownika. Również przydatne do wyłączenia wyszukiwania na stronie WordPress.
add_filter( 'get_search_form', function( $a ) { return null; });
3. Wyłączania widget wyszukiwarki WordPress
I ostatni kod pozwalający na wyłączenie widgetu wyszukiwarki WordPress także w panelu administratora. Swoją drogą polecam nasz bardzo dobry poradnik, który pokaże Ci jak przywrócić klasyczne widgety WordPress.
function siriuspro_search_widget_remove() { unregister_widget( 'WP_Widget_Search' ); } add_action( 'widgets_init', 'siriuspro_search_widget_remove');
I to tyle 🤓 Teraz wpisz sobie w przeglądarce internetowej swój adres URL z tym samym parametrem i zobacz co się stanie:
https://siriuspro.pl/?s=wordpress
Twoja strona jest już całkowicie bezpieczna i odporna na próby korzystania z wyszukiwania WordPress. Zalecam zastosowanie wszystkich tych kodów, jednak możesz z powodzeniem dodać do pliku functions.php tylko wybrane z nich.
Wyłącz wyszukiwanie w WordPress z Sirius Pro
Jeżeli zadanie to przerasta Twoje możliwości lub po prostu nie chcesz samodzielnie modyfikować pliki na serwerze, a być może zależy Ci, aby zabezpieczyć swój system WordPress także przed innymi atakami to skontaktuj się z nami za pomocą naszego formularza. Nasi eksperci pomogą Ci zoptymalizować i zabezpieczyć stronę WordPress, a także w każdym innym zadaniu związanym z tą platformą. No to do usłyszenia i hej 🙋🏽♂️