Thats what I was asking for: it tests against an empty string.
case 'empty_not':
$render_set = (string) $value !== '';
break;
That means, if a function e.g. returns falseor null this case would NOT return true.
But in case of Array()or [] (empty array) the condition will return true â since itâs not empty (an Array item but without values and the warning Array to string conversion).
Additionally, I donât know how you can be sure itâs not reserved (implying you have studied the code closely) and also not know how to find the answer to your initial question. 
Look, I know that bricks already uses an internal tag {acf_field_name} to read values ââdirectly from ACF (where field_name would be the ACF field key).
My code reads a key that doesnât exist in any of my ACF fields â thatâs why Iâm sure itâs not used by bricks´ built-in method.
As long as you control the field names and its exact keys, there will be no conflict.
Youâre right it might be âcleanerâ to change the prefix but technically it does no harm.
Since you guys were asking for the code, hereâs an excerpt of it.
If you look closely, youâll recognize, that
'{acf_news_links_downloads}' is just a string key matched against, soâŚ
- âŚbricks´ internal mapping would look for an ACF field named
news_links_download
- in
get_field('news_downloads', $post_id); you see that my field key is named news_downloads (here: a repeater field)
add_filter('bricks/dynamic_data/render_content', function ($content, $post, $context) {
$post_id = is_object($post) ? $post->ID : (int) $post;
if (get_post_type($post_id) !== 'jobs') {
$queried_id = get_queried_object_id();
if ($queried_id && get_post_type($queried_id) === 'jobs') {
$post_id = $queried_id;
}
}
// here is where it's getting interesting...
$replacements = [
'{acf_news_links_phone_href}' => function () use ($post_id) {
$tel = get_field('news_links_phone', $post_id);
if (empty($tel) || ! is_string($tel)) {
return '';
}
return esc_attr('tel:' . fn_format_phone_number($tel));
},
'{acf_news_links_phone_text}' => function () use ($post_id) {
$tel = get_field('news_links_phone', $post_id);
if (empty($tel) || ! is_string($tel)) {
return '';
}
return esc_html($tel);
},
'{acf_news_links_email_href}' => function () use ($post_id) {
$email = get_field('news_links_email', $post_id);
if (empty($email) || ! is_string($email)) {
return '';
}
return esc_attr('mailto:' . sanitize_email($email));
},
'{acf_news_links_email_text}' => function () use ($post_id) {
$email = get_field('news_links_email', $post_id);
if (empty($email) || ! is_string($email)) {
return '';
}
return esc_html($email);
},
'{acf_news_links_downloads}' => function () use ($post_id) {
$rows = get_field('news_downloads', $post_id); // repeater
if (empty($rows) || !is_array($rows)) {
return '';
}
$items = '';
foreach ($rows as $index => $row) {
$file_field = $row['news_downloads_file'] ?? '';
$url_external = $row['news_downloads_file_url_ext'] ?? '';
$url_external = is_string($url_external) ? $url_external : '';
// internal OR external url is mandatory
$has_internal = ! empty($file_field);
$has_external = $url_external !== '';
if (! $has_internal && ! $has_external) {
continue;
}
$label = ! empty($row['news_downloads_text']) && is_string($row['news_downloads_text'])
? $row['news_downloads_text']
: ($has_internal
? basename(is_array($file_field) ? ($file_field['url'] ?? '') : (string) $file_field)
: basename($url_external));
$token = fn_make_download_token($post_id, $index);
$download_url = add_query_arg([
'fn_download' => 1,
'post_id' => $post_id,
'row' => $index,
'token' => $token,
], home_url('/'));
$items .= sprintf(
'<li class="news-links-download-item"><a href="%s" class="news-links-download-link">%s</a></li>',
esc_url($download_url),
esc_html($label)
);
}
if (empty($items)) {
return '';
}
return '<ul class="news-links-downloads">' . $items . '</ul>';
},
];
foreach ($replacements as $tag => $callback) {
if (strpos($content, $tag) !== false) {
$content = str_replace($tag, $callback(), $content);
}
}
return $content;
}, 10, 3);
But you know what â simply removing the textarea element from the page structure and re-adding it (with the same tag {acf_news_links_downloads}) solved the problem. WTF 