Ligase 2.4.3 — bulk schema flags + Narzędzia menu cleanup
Co usunięto
"Narzędzia" submenu z menu Ligase. Strona była zepsuta (niekompletne akcje, brak jasnego use case). Jej funkcje przeniesione tam gdzie pasują:
- masowe operacje → Posty (nowy panel)
- czyszczenie cache + import/export → Ustawienia
Plik tools.php zostaje na dysku dla back-compat, ale nie jest już linkowany.
Co dodano — Masowe ustawianie znaczników schema
Ligase → Posty → "⚡ Masowe ustawianie znaczników schema" (rozwijany panel)
Filtry zakresu
- Typ wpisu — dropdown ze wszystkimi publicznymi CPT (post / page / product / job_listing / własne CPT)
- Termin (opcjonalnie) — wpisz slug kategorii/tagu/term. Walka przez wszystkie taksonomie dla danego CPT.
16 znaczników schema
Zaznacz które chcesz włączyć/wyłączyć:
- Service, FAQPage, HowTo, Review
- QAPage, Product, Recipe, JobPosting
- DiscussionForumPosting, Course, Event, SoftwareApplication
- DefinedTerm, ClaimReview, ProfilePage, Paywall
Wariant Article (dla post)
Masowo ustaw BlogPosting / Article / NewsArticle / TechArticle / LiveBlogPosting.
Akcja
- ◯ Enable (=1) lub ◯ Disable (=0)
- Preview button — najpierw pokaż ile pozycji bez ruszania niczego
- Confirm dialog z listą zmian przed apply
- Per-post cache invalidation po każdym update
Use case: kancelaria + strony usługowe
Scenariusz: Masz na kancelariasprawyrodzinne.pl 12 stron typu "Adwokat rozwód Warszawa", "Adwokat alimenty Warszawa" itd. w kategorii uslugi-warszawa. Chcesz dla wszystkich włączyć Service schema:
- Ligase → Posty → ⚡ Masowe ustawianie znaczników
- Typ wpisu:
page - Termin:
uslugi-warszawa - ☑ Service
- Akcja: Enable
- "Najpierw pokaż ile pozycji" → Znaleziono 12 pozycji typu "page" w terminie "uslugi-warszawa"
- "Zastosuj do pasujących wpisów" → potwierdzenie → ✅ Zaktualizowano 12 z 12 pozycji
Po tym każda z 12 stron ma Service toggle ON. Wchodzisz w pojedynczą stronę i wypełniasz Service section w metaboxie (areaServed, priceRange, serviceType) — albo zostawiasz domyślne.
Use case: blog + FAQ
Scenariusz: Top 50 wpisów blog do oznaczenia jako FAQ-eligible:
- Posty → Masowe ustawianie
- Typ:
post, Termin: (puste lub np.pytania-i-odpowiedzi) - ☑ FAQPage
- Enable → Apply
Potem dla każdego wpisu który realnie ma format pytanie-odpowiedź w treści, wchodzisz i wypełniasz pipe-repeater FAQ w metaboxie. Wpisy bez pytań pominiesz (flag jest, ale klasa FAQPage::build() i tak zwraca null gdy brak items — bezpieczne).
Security
- Oba AJAX endpointy:
manage_optionsgated. - Flag keys whitelist server-side (16 pól, nie przyjmie arbitralnego meta).
- Variant whitelist (tylko 5 dozwolonych typów).
- Post type sanitize_key, term slug sanitize_title.
Compatibility
Drop-in z 2.4.2. Bez migracji. Istniejące bulk-change schema_type działa dalej.