Extreme Text Replacer
Funkcjonalność
Wtyczka dodaje stronę administracyjną w sekcji Narzędzia, gdzie można wprowadzić dokładny szukany ciąg znaków oraz opcjonalny ciąg zastępczy. Zamiany są wykonywane na wszystkich opublikowanych wpisach lub wyłącznie na wpisach z wybranej kategorii.
Do dopasowywania używana jest funkcja PHP str_replace, co pozwala precyzyjnie celować w komentarze bloków (np. <!-- wp:block {"ref":66} /-->), fragmenty HTML lub dowolny inny tekst literalny. Tryb próbny umożliwia podgląd liczby wystąpień, które zostałyby zmienione, oraz listy wpisów, których dotyczą zmiany — w formie tabeli zawierającej ID wpisu, tytuł i liczbę wystąpień — zanim zmiany zostaną faktycznie zastosowane.
Jeśli szukany ciąg pasuje do wzorców mogących wpłynąć na układ strony (np. ograniczniki bloków, popularne tagi HTML), interfejs wyświetla ostrzeżenie i prosi o potwierdzenie. Zamiany są wykonywane przez AJAX z weryfikacją nonce i uprawnień — uruchamiać je mogą wyłącznie użytkownicy z uprawnieniem manage_options.
Stos technologiczny
Wtyczka zbudowana jest w oparciu o jedną główną klasę PHP, która rejestruje podstronę w menu Narzędzia, dołącza pliki CSS i JavaScript panelu administracyjnego wyłącznie na tej stronie oraz udostępnia akcję AJAX obsługującą zamianę.
Warstwa backendowa używa WP_Query do pobierania wpisów (opcjonalnie filtrowanych po kategorii), iteruje po zawartości wpisów i stosuje str_replace; w trybie próbnym zbiera dane podglądu zamiast wywoływać wp_update_post. Interfejs administracyjny oparty jest na standardowych formularzach HTML z jQuery, obsługującym walidację, wykrywanie niebezpiecznych wzorców, wysyłanie żądań AJAX oraz dynamiczne tabele podglądu.
Skrypty są lokalizowane za pomocą wp_localize_script, co pozwala przekazać adres URL AJAXa, nonce oraz listę niebezpiecznych wzorców. Warstwę wizualną zapewnia niewielki plik CSS dedykowany panelowi administracyjnemu. Wtyczka wymaga WordPressa 5.0+ i PHP 7.0+.
Translation Glossary
Funkcjonalność
Wtyczka wprowadza dwa niestandardowe typy wpisów: Słowniki (tg_glossary) i Terminy słownikowe (tg_term). Słownik przypisuje się do jednej lub więcej kategorii za pomocą metaboxa — z terminów danego słownika korzystają wyłącznie wpisy należące do tych kategorii.
Każdy termin posiada tytuł, definicję (treść wpisu), opcjonalne odmiany (np. formy liczby mnogiej, koniugacje) przechowywane w metadanych wpisu, a także przypisanie do konkretnego słownika. W panelu administracyjnym niestandardowe menu najwyższego poziomu grupuje zarządzanie słownikami i terminami; metaboxy obsługują przypisywanie kategorii do słowników oraz przypisywanie słownika i odmian do terminów.
Po stronie frontowej, podczas wyświetlania pojedynczego wpisu, wtyczka wczytuje słowniki powiązane z kategoriami wpisu, zbiera wszystkie należące do nich terminy, a następnie wykonuje na treści wyrażenie regularne bez rozróżniania wielkości liter — owijając pierwsze wystąpienie każdego terminu (wraz z odmianami) w element <span> z atrybutem data zawierającym objaśnienie. Publiczny CSS i JavaScript (jQuery) stylizują te elementy i wyświetlają dymek z objaśnieniem po najechaniu kursorem.
Strony archiwum słownika wyświetlają tytuł słownika oraz wygenerowaną listę wszystkich terminów z definicjami poniżej treści wpisu. Wtyczka pomija zamianę tekstu wewnątrz tagów HTML i zapobiega nakładaniu się podświetleń. Dla motywów zakładających, że każdy wpis ma przypisaną kategorię, wtyczka przydziela kategorię zastępczą do wpisów słownikowych i filtruje get_the_category, aby niestandardowe typy wpisów nie powodowały błędów.
Stos technologiczny
Baza kodu zorganizowana jest wokół głównej klasy typu singleton, która definiuje stałe, ładuje klasy komponentów oraz podpina funkcje aktywacji i dezaktywacji (w tym odświeżanie reguł przepisywania adresów URL).
Osobne klasy obsługują: rejestrację niestandardowych typów wpisów (tg_glossary, tg_term ze wsparciem kategorii dla słowników), interfejs administracyjny i menu, filtry treści po stronie frontowej wraz z dołączaniem zasobów oraz metaboxy z zapisem chronionym nonce. Metadane wpisów służą do przechowywania identyfikatorów kategorii, identyfikatorów słownika i odmian terminu.
Warstwa frontendowa korzysta z filtrów the_content i the_title, a relacje kategoria–słownik–termin rozwiązywane są za pomocą WP_Query i get_posts z parametrem meta_query. Dopasowywanie terminów odbywa się przez wyrażenia regularne z granicami wyrazów. Zasoby dołączane są z wersjonowanymi adresami URL; wtyczka ładuje domenę tekstową z katalogu languages i zawiera plik .pot. Wymaga WordPressa 5.0+ i PHP 7.0+, licencjonowana na warunkach GPL v2 lub nowszej.
Placeholder Translations
Funkcjonalność
Wtyczka udostępnia stronę ustawień w sekcji Ustawienia, gdzie można dodawać zastępniki, podając slug (małe litery, cyfry, podkreślenia) oraz tekst domyślny. Slug jest przechowywany jako klucz w tablicy opcji, a jego wartością jest domyślny (lub źródłowy) ciąg znaków.
Istniejące zastępniki wyświetlane są w tabeli zawierającej slug, wskazówkę użycia w formacie {{slug}} oraz tekst domyślny; można je usuwać za pomocą linku chronionego nonce. W treści blokowej (Edytor witryny, wpisy, strony) każde wystąpienie {{slug}} jest wykrywane podczas renderowania za pomocą filtra render_block i zastępowane odpowiednim tekstem.
Jeśli dostępny jest Polylang, zamiana używa funkcji pll__(), dzięki czemu wynik jest tłumaczony zgodnie z bieżącym językiem. Ciągi znaków zastępników są rejestrowane w Polangu podczas inicjalizacji panelu administracyjnego za pomocą pll_register_string w grupie placeholder-translations, skąd pojawiają się w sekcji Języki → Tłumaczenia ciągów znaków.
Wtyczka nie modyfikuje przechowywanej treści — zamiana zachodzi wyłącznie podczas renderowania bloków, dzięki czemu ten sam szablon lub blok wielokrotnego użytku może wyświetlać różny tekst w zależności od języka. Logika dodawania, usuwania i rejestracji jest zabezpieczona nonce i uprawnieniem manage_options.
Stos technologiczny
Plik inicjalizacyjny definiuje stałe wersji, ścieżki oraz nazwę opcji, a następnie warunkowo ładuje klasę administracyjną i bezwarunkowo ładuje klasy renderowania oraz integracji z Polylangiem. Inicjalizacja uruchamia się na hooku init.
Klasa renderowania podpina się pod render_block i zastępuje każde znane {{slug}} — wyszukuje je w opcji i wywołuje pomocniczą funkcję, która zwraca pll__( $default_text ) gdy Polylang jest dostępny, a w przeciwnym razie tekst domyślny. Klasa integracji z Polylangiem podpina się pod init z priorytetem 20 i wyłącznie w panelu administracyjnym odczytuje opcję, rejestrując każdą parę slug–tekst za pomocą pll_register_string.
Klasa administracyjna dodaje podstronę w menu opcji, obsługuje zapis przez POST i usuwanie przez GET z weryfikacją nonce i uprawnień, sanityzuje slug za pomocą sanitize_key i tekst za pomocą wp_kses_post oraz renderuje formularz i tabelę z eskejpowanymi danymi wyjściowymi. Wtyczka nie korzysta z niestandardowych typów wpisów ani dodatkowych tabel bazy danych — wszystkie dane przechowywane są w jednej opcji WordPressa. Wymaga WordPressa 5.9+, PHP 7.4+ i jest zaprojektowana do współpracy z Polylangiem w witrynach wielojęzycznych.