A tisztítás kikapcsolása egy Dynamic Field widgetnél
Nyers HTML, SVG vagy szkript megjelenítése a Dynamic Field widgetben egy CSS-osztállyal és egy PHP-szűrővel.
A JetEngine a Dynamic Field widget kimenetét alapból a wp_kses_post() függvénnyel tisztítja. Ez védi az oldalt, de eltávolítja azt a jogos kódot is, például SVG-ikonokat vagy REST API-ból érkező adatokat. Egy PHP-szűrővel és egy CSS-osztállyal egyetlen widgetnél kikapcsolhatod a tisztítást, az oldal többi részén a védelem megmarad.
Szükséges: Elementor (ingyenes) és az aktív JetEngine.
Mikor érdemes használni
Szekció neve “Mikor érdemes használni”- Nyers SVG-ikonok: ha
<svg>kódot tárolsz metamezőben, és nem akarod, hogy az útvonalak vagy a kitöltés attribútumai eltűnjenek. - REST API-integráció: ha a JetEngine külső REST API-ból hoz nyers HTML-t vagy JSON-t, amelynek formázatlannak kell maradnia.
- Egyedi szkriptek: szokatlan HTML-attribútumokat használó kódrészletek és interaktív elemek.
Két szűrő, két cél
Szekció neve “Két szűrő, két cél”Két szűrő is bypassolja a szokásos korlátozást, és más a feladatuk:
| Szűrő | Hatás | Mikor használd |
|---|---|---|
| Tisztítás kikapcsolása (ez a fejezet) | Egyetlen widgetnél teljesen kikapcsolja a tisztítást, a disable-sanitize CSS-osztály alapján |
SVG-hez és REST API-adatokhoz, ahol a komplex XML-útvonalakat nehéz egyenként engedélyezni |
wp_kses engedélyezőlista |
A WordPress magbiztonságát módosítja az egész webhelyen: megadott címkéket (például <input>, <iframe>) enged meg |
Hiányzó iframe-ek és térképek javítására: engedélyezed a szükséges attribútumokat (src, type), a többi szűrő aktív marad |
A szűrő hozzáadása
Szekció neve “A szűrő hozzáadása”A szűrőt egy kódrészlet-bővítménnyel (például Code Snippets) vagy a sablon functions.php fájljában add hozzá. Ez utóbbinál inkább gyermeksablonban, hogy a frissítés ne írja felül.
Code Snippets használatával:
- Telepítsd és aktiváld a Code Snippets bővítményt.
- Menj az Összes kódrészlet oldalra, és kattints az Új hozzáadása gombra.
- Írj be egy nevet (például „Tisztítás kikapcsolása a Dynamic Fieldben”), a típus maradjon PHP.
- Másold be a kódot:
add_filter( 'jet-engine/listings/dynamic-field/sanitize-output', function( $result, $df ) {
if ( false !== strpos( $df->get( '_css_classes' ), 'disable-sanitize' ) ) { $result = false; }
return $result;
}, 0, 2 );- Kattints a Mentés és aktiválás gombra.
A kód megnézi, hogy a Dynamic Field widget kapott-e disable-sanitize CSS-osztályt, és ha igen, leállítja a tisztítást.
A metamező előkészítése
Szekció neve “A metamező előkészítése”Az adatot Szövegterület típusú metamezőben tárold. Például az SVG-ikon, amit a bejegyzés mezőjébe írsz:
<svg viewBox="0 0 24 24" width="20" height="20"> <path d="M12 21s-8-4.6-8-11a5 5 0 0 1 10 0 5 5 0 0 1 10 0c0 6.4-8 11-8 11z"/></svg>A widget beállítása
Szekció neve “A widget beállítása”- Húzz egy Dynamic Field widgetet a listázási sablonba vagy az egyedi oldal sablonjába.
- A Forrás legyen Metaadatok, a Metamező listából válaszd ki az SVG-t tároló mezőt.
- Nyisd meg a widget Haladó fülét, és a CSS-osztályok mezőbe írd be:
disable-sanitize. - Tedd közzé az oldalt. Az ikon ezután megjelenik.
Csak olyan mezőnél használd ezt az osztályt, amelynek a tartalmát megbízható forrás adja, például az adminisztrátorok. Ne kapcsold ki a tisztítást olyan mezőnél, ahová a látogatók vagy ismeretlen felhasználók írhatnak be tartalmat.
Készült: