Tovább a tartalomhoz

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.

  • 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ő 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ő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:

  1. Telepítsd és aktiváld a Code Snippets bővítményt.
  2. Menj az Összes kódrészlet oldalra, és kattints az Új hozzáadása gombra.
  3. Írj be egy nevet (például „Tisztítás kikapcsolása a Dynamic Fieldben”), a típus maradjon PHP.
  4. 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 );
  1. 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.

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>
  1. Húzz egy Dynamic Field widgetet a listázási sablonba vagy az egyedi oldal sablonjába.
  2. A Forrás legyen Metaadatok, a Metamező listából válaszd ki az SVG-t tároló mezőt.
  3. Nyisd meg a widget Haladó fülét, és a CSS-osztályok mezőbe írd be: disable-sanitize.
  4. 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:

Tiszteletben tartjuk a magánszférádat

Sütiket használunk a böngészési élmény javítására és a forgalom elemzésére. Az analitika csak akkor indul, ha engeded. Adatvédelmi irányelvek, Sütitájékoztató.

Sütibeállítások