✅ Nowości, motywy, wtyczki WEB i WordPress. Tutaj dzielimy się wskazówkami i najlepszymi rozwiązaniami dla stron internetowych.

Jak usunąć znaki specjalne z permalinków?

10

Za każdym razem, gdy pracujesz z WordPressem i interfejsami API innych firm, zawsze istnieje ryzyko, że napotkasz problemy, w których interfejs API innej firmy nie jest przygotowany do obsługi niektórych znaków, które istnieją w permalinku.

Jednak w zależności od ustawień linku bezpośredniego może to być problem, ale nie musi. Na przykład możesz mieć swoje permalinki ustawione na coś w rodzaju ?p=123 dla każdego posta. W takim przypadku to nie jest duży problem.

Ale jeśli używasz „ładnych permalinków", a Twój permalink zawiera coś w rodzaju symbolu znaku towarowego lub symbolu praw autorskich, może to powodować problemy, gdy komunikujesz się z wymienionym interfejsem API innej firmy.

Po pierwsze, jeśli używasz ładnych permalinków, są one zazwyczaj tworzone na podstawie tytułu posta. Więc jeśli użyjesz czegoś takiego jak All About The Acme Machine™, wygeneruje permalink, który zawiera coś takiego.

Na przykład możesz mieć WordPress automatycznie generować coś takiego: https://acme.com/all-about-the-acme®-machine/

A kiedy nadejdzie czas, aby wysłać te informacje do zewnętrznego interfejsu API (lub spróbować przetworzyć je za pomocą czegokolwiek, co nie jest przygotowane na takie znaki), wtedy wpadniesz w kłopoty.

Na szczęście WordPress zapewnia hak, który pozwala nam przetwarzać permalinki, zanim zostaną zserializowane do bazy danych. Mianowicie jest to hak wp_insert_post_data.

A w tym przypadku działa to tak:

  1. Skonfiguruj podpięcie do uruchomienia na późnym etapie procesu serializacji,
  2. Szukaj postaci, które mogą sprawiać problemy,
  3. Zastąp je pustym ciągiem,
  4. Zwróć zaktualizowane informacje do WordPress w celu serializacji.

Oto przykład, który ma na celu usunięcie różnych symboli, takich jak symbole praw autorskich, symbole znaków towarowych, symbole rejestracji i inne ich warianty zarówno w zakodowanych formatach, jak i zakodowanych odpowiednikach:

Zauważ, że funkcja akceptuje dane posta jako argument, sprawdza, czy nie pracujesz z wersją roboczą, oczekującym artykułem lub automatyczną wersją roboczą, a następnie usuwa treść w nazwie posta przez

To może być drobiazgowy problem. Oznacza to, że być może nie spotkasz go w swoich wysiłkach rozwojowych. Z drugiej strony, jeśli tak, to zapewnia to rozwiązanie, które nie tylko pozwala usunąć określone znaki z adresu URL, ale także pozwala to zrobić w skalowalny sposób.

Tak więc, gdy zmienią się Twoje potrzeby, możesz po prostu zaktualizować wywołanie preg_replace o znaki, które musisz usunąć z adresu URL.

Źródło nagrywania: tommcfarlin.com

Ta strona korzysta z plików cookie, aby poprawić Twoje wrażenia. Zakładamy, że nie masz nic przeciwko, ale możesz zrezygnować, jeśli chcesz. Akceptuję Więcej szczegółów