Tovább a tartalomhoz

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.

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;
}

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:

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