WordPress

Jak usunąć przekierowanie 301 z pierwszej strony paginacji WooCommerce?

Dodatkowe przekierowania nie są niczym dobrym dla pozycjonowania naszej strony. Roboty indeksujące, odwiedzając naszą stronę – mają przydzieloną ograniczoną ilość zasobów (tzw. „Crawl budget”). Przez dodatkowe przekierowania, które prowadzą użytkownika z punktu A. do punktu B. robot traci te zasoby, przez co może nie dotrzeć do istotnych dla nas stron – np. nowego wpisu blogowego.

Czym właściwie jest przekierowanie 301?

Zacznijmy od wyjaśnienia, czym w ogóle jest przekierowanie 301? Sama liczba 301 to tak zwany kod statusu HTTP. Czyli komunikat zwracany przez serwer po wysłaniu przez naszą przeglądarkę żądania (request) o pobranie jakiegoś zasobu. W przypadku, gdy serwer znalazł zasób, o który go prosimy, zwraca on liczbę / kod statusu 200, w przypadku, gdy go nie znalazł, zwróci nam status 404. W przypadku, gdy zasób, o który pytamy, jest dostępny pod innym adresem, skorzysta właśnie z kodu 301.

Kod odpowiedzi 301 oznacza, że jest to przekierowanie stałe. Analogicznie kod odpowiedzi 302 oznacza przekierowanie tymczasowe.

Jak sprawdzić kod odpowiedzi serwera?

Jest na to kilka sposobów, ale najprostsze i jednocześnie najwygodniejsze to darmowe narzędzie online httpstatus.io lub analogicznie skorzystanie z wtyczki do przeglądarki, np. Link Redirect Trace.

wtyczka link redirect trace wyświetlająca przekierowanie
Zrzut ekranu z wtyczki Link Redirect Trace

Jak usunąć przekierowanie 301 z pierwszej strony paginacji?

Teraz gdy wiesz już czym jest przekierowanie 301 i dlaczego warto je poprawić, przejdźmy do głównego tematu tego artykułu. WooCommerce jest to znana i popularna wtyczka na WordPress, pozwalająca zamienić naszego bloga w sklep internetowy. Posiada w swojej budowie problem, którym dziś się zajmiemy, a jest to przekierowanie pierwszej strony paginacji (lub w niektórych przypadkach duplikat) na stronę główną danego listingu.

Jak rozpoznać ten problem?

Przejdź na dowolny listing produktów WooCommerce np. kategorię. Twój link powinien wyglądać mniej więcej tak:

https://domena.pl/kategoria/

przejdź na drugą stronę paginacji. Link Twojej aktualnej strony powinien wyglądać mniej więcej tak:

https://domena.pl/kategoria/page/2/

Najedź na link do poprzedniej strony, czyli numer 1 lub analogicznie na strzałkę w lewo. Jeśli Twój link wygląda tak:

https://domena.pl/kategoria/page/1/

a po kliknięciu w niego, w pasku adresu wyświetla Ci się znowu pierwszy adres, czyli:

https://domena.pl/kategoria/

To właśnie zostałeś przekierowany ze strony /kategoria/page/1/ na stronę /kategoria/.

Jeśli jednak nie zostałeś przekierowany na główną stronę kategorii, a Twój aktualny adres URL w pasku nawigacji to /kategoria/page/1/ – mimo, że zacząłeś ze strony /kategoria/ – to masz o wiele poważniejszy problem, czyli duplikację treści między tymi dwoma podstronami.

Dobra wiadomość jest taka, że nasze rozwiązanie pomoże pozbyć się przekierowania w obu przypadkach. Zła wiadomość jest taka, że domyślnie ta strona powinna przekierować na główną stronę danej kategorii, więc nawet jeśli poprawimy paginację, ten link nadal może gdzieś się znajdować i może być wymagana konsultacja ze specjalistą.

Wiesz już, że powyższy problem występuje na Twojej stronie? Teraz pokażemy Ci jak go rozwiązać!

Jak rozwiązać problem z paginacją na WooCommerce?

Całe rozwiązanie ograniczy się do fragmentu kodu, który będzie trzeba wkleić w odpowiednim pliku naszego motywu.

/* Fix przekierowania z paginacji WooCommerce */
add_filter('paginate_links', function($new_link) 
{
    $p = strpos($new_link, 'page/1/');
    if($p !== false)
        $new_link = substr($new_link, 0, $p);
 
    return $new_link;
});

powyższy kod należy w całości skopiować i wkleić w pliku functions.php naszego aktualnego motywu.

Jak działa powyższy kod?

W dużym uproszczeniu, kiedy tylko nasz motyw zechce wygenerować stronę i poprosi serwer o link do strony paginacji – ten przepuści każdy taki link przez przygotowany powyżej filtr. Filtr ten, przeszukuje każdy z linków w poszukiwaniu fragmentu tekstu „page/1/”, który występuje tylko dla linków do strony pierwszej i go wytnie.

Jak wdrożyć powyższy kod na swojej stronie?

Żeby to zrobić, należy wykonać zasadniczo dwa kroki:
1. Sprawdzić jak nazywa się nasz aktualnie używany na stronie motyw,
2. Znaleźć plik functions.php dla danego motywu i wkleić podany fragment.

Aby sprawdzić aktualny motyw:
Kokpit -> Wygląd -> Motywy;

Aktualnie używany na naszej stronie motyw pojawi się na pierwszym miejscu i powinien mieć napis np.
„Aktywny: NAZWA-MOTYWU”.

Przykładowy aktywowany motyw

Aby edytować plik functions.php:

Kokpit -> Wygląd -> Edytor motywu -> Wybierz z rozwijanej listy w prawym górnym rogu swoją nazwę aktywowanego motywu -> Kliknij „Wybierz”;
Po wykonaniu tych kroków powinna wyświetlić się lista wszystkich plików tego motywu. W liście po prawej stronie należy odnaleźć plik functions.php i go kliknąć. Po otwarciu pliku wystarczy zjechać na sam dół i wkleić podany fragment kodu. Po wszystkim wystarczy kliknąć „Zaktualizuj plik” i odświeżyć stronę z błędnym linkiem do strony pierwszej. Po poprawnie wprowadzonej zmianie link do strony pierwszej będzie prowadzić bezpośrednio do /kategoria/ zamiast /kategoria/page/1/ przez co nie będzie dodatkowego przekierowania. 🙂

Uwagi i pomoc dla osób nie-technicznych:

W pliku functions.php trzeba być ostrożnym, wystarczy usunąć jeden zły znak i cała strona może przestać działać.
W takim wypadku należy skontaktować się z hostingiem / twórcą strony z prośbą o pomoc lub przywrócenie kopii zapasowej. Analogicznie jeśli wiesz, co zostało zmodyfikowane, poproś o dostęp (lub wygeneruj go w panelu hostingu) do serwera FTP i znajdź na nim folder wp-content/themes/NAZWA-MOTYWU zawiera on te same pliki, jak te, które mogliśmy edytować z poziomu Kokpitu. Znajdzie się tam również zmodyfikowany plik functions.php. Należy go pobrać, otworzyć dowolnym edytorem tekstu, poprawić nasz błąd, zapisać i wrzucić na serwer nadpisując przy tym stary plik.

Leave a comment

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Sprawdź także

WordPress

Jak znaleźć nazwę użytkownika (autora) w WordPressie?

Czasem zdarza się, że klient – na którego stronie pracujemy – nie zna swojej nazwy użytkownika do zalogowania się w kokpicie
WordPress

Jak zrobić formularz w WordPressie bez instalowania wtyczek?

Chciałbyś przygotować formularz na swojej stronie, ale chcesz zrobić go bez wtyczek? Duża ilość wtyczek może negatywnie wpłynąć nie tylko