Egyéni dinamikus adat címke
Saját dinamikus adat címke regisztrálása és megjelenítése szűrőkkel, valamint a bricks_render_dynamic_data függvény használata.
Fejlesztőként saját dinamikus adat címkét is létrehozhatsz, amely a szerkesztő dinamikus adatok listájában a többi mellett jelenik meg. A példában a címke felirata „My Dynamic Data”, és egy saját csoportban látszik.
1. lépés: a címke regisztrálása
Szekció neve “1. lépés: a címke regisztrálása”A címkét a bricks/dynamic_tags_list szűrővel add hozzá a szerkesztő listájához. A címke neve legyen egyedi, ezért érdemes előtagot adni neki:
add_filter( 'bricks/dynamic_tags_list', 'add_my_tag_to_builder' );
function add_my_tag_to_builder( $tags ) { $tags[] = [ 'name' => '{my_dd_tag}', 'label' => 'My Dynamic Data', 'group' => 'My Dynamic Data Group', ];
return $tags;}2. lépés: a megjelenítés bekötése szűrőkre
Szekció neve “2. lépés: a megjelenítés bekötése szűrőkre”A bricks/dynamic_data/render_tag szűrő
Szekció neve “A bricks/dynamic_data/render_tag szűrő”Ezt akkor hívja a Bricks, amikor a \Bricks\Integrations\Dynamic_Data\Providers::render_tag() egyetlen címkét értelmez:
add_filter( 'bricks/dynamic_data/render_tag', 'get_my_tag_value', 20, 3 );
function get_my_tag_value( $tag, $post, $context = 'text' ) { if ( ! is_string( $tag ) ) { return $tag; }
// A $tag a címke neve a külső kapcsos zárójelek nélkül $clean_tag = str_replace( [ '{', '}' ], '', $tag );
// Csak a my_dd_tag címkét keressük if ( $clean_tag !== 'my_dd_tag' ) { return $tag; }
// Ide jön a saját logikád; a run_my_dd_tag_logic() függvényt neked kell megírnod $value = run_my_dd_tag_logic();
return $value;}
function run_my_dd_tag_logic() { $my_value = 'My dynamic data value:';
return $my_value;}Ha a címke argumentumot is fogad (például my_dd_tag:arg1), a logikát ennek megfelelően kell módosítani. Egy egyszerű PHP-példa:
add_filter( 'bricks/dynamic_data/render_tag', 'get_my_tag_value', 20, 3 );
function get_my_tag_value( $tag, $post, $context = 'text' ) { if ( ! is_string( $tag ) ) { return $tag; }
$clean_tag = str_replace( [ '{', '}' ], '', $tag );
// Csak a my_dd_tag: előtagú címkét keressük if ( strpos( $clean_tag, 'my_dd_tag:' ) !== 0 ) { return $tag; }
// Az argumentum kinyerése $argument = str_replace( 'my_dd_tag:', '', $clean_tag );
$value = run_my_dd_tag_logic( $argument );
return $value;}
function run_my_dd_tag_logic( $argument ) { $my_value = 'My dynamic data value: ' . $argument;
return $my_value;}Összetettebb esetben a logikát igényeid szerint alakíthatod.
A bricks/dynamic_data/render_content és a bricks/frontend/render_data szűrő
Szekció neve “A bricks/dynamic_data/render_content és a bricks/frontend/render_data szűrő”Ezeket akkor használja a Bricks, amikor a \Bricks\Integrations\Dynamic_Data\Providers::render_content() olyan szöveget értelmez, amelyben többféle dinamikus címke is lehet. Ilyen feladatot végez például a bricks_render_dynamic_data() függvény is:
add_filter( 'bricks/dynamic_data/render_content', 'render_my_tag', 20, 3 );add_filter( 'bricks/frontend/render_data', 'render_my_tag', 20, 2 );
function render_my_tag( $content, $post, $context = 'text' ) { // A $content tartalmazhat HTML-t és más dinamikus címkéket is // Csak a {my_dd_tag} címkét keressük if ( strpos( $content, '{my_dd_tag}' ) === false ) { return $content; }
$my_value = run_my_dd_tag_logic();
// A címke lecserélése a megjelenítendő értékre $content = str_replace( '{my_dd_tag}', $my_value, $content );
return $content;}Argumentumos címkénél reguláris kifejezéssel kereshetsz:
add_filter( 'bricks/dynamic_data/render_content', 'render_my_tag', 20, 3 );add_filter( 'bricks/frontend/render_data', 'render_my_tag', 20, 2 );
function render_my_tag( $content, $post, $context = 'text' ) { // Csak akkor megyünk tovább, ha van {my_dd_tag: kezdetű címke if ( strpos( $content, '{my_dd_tag:' ) === false ) { return $content; }
preg_match_all( '/{(my_dd_tag:[^}]+)}/', $content, $matches );
// Ha nincs találat, az eredeti szöveget adjuk vissza if ( empty( $matches[0] ) ) { return $content; }
foreach ( $matches[1] as $key => $match ) { $tag = $matches[0][ $key ];
// A $match a címke neve kapcsos zárójelek nélkül; a korábbi függvényt újra felhasználhatod $value = get_my_tag_value( $match, $post, $context );
$content = str_replace( $tag, $value, $content ); }
return $content;}A bricks_render_dynamic_data függvény
Szekció neve “A bricks_render_dynamic_data függvény”Ez a segédfüggvény egy szövegben lecseréli a dinamikus adat címkéket a tartalmukra:
echo bricks_render_dynamic_data( $content, $post_id, $context );| Paraméter | Jelentés |
|---|---|
$content (kötelező) |
A dinamikus adat címkéket tartalmazó szöveg. |
$post_id |
A bejegyzés azonosítója, ha kell. Alapérték: az aktuális bejegyzés azonosítója. |
$context |
A megjelenítés utáni felhasználás környezete: text, link, image vagy media. Alapérték: text. |
A visszatérési érték a szöveg a címkék helyére behelyettesített tartalommal. Példa:
echo bricks_render_dynamic_data( 'My Post Title: {post_title}' );Készült: