In Bricks Discord chat, a user asked:
Does anyone know how to output the label of an ACF link field through Dynamic Data?
With the Return Value of a “Link” type of ACF field set at its default “Link Array”, the array looks like this:
when the field is populated for a post like this:
For printing out the values of title
and url
array keys for use in Bricks via its dynamic data tags feature, we can define a custom function like this (goes in child theme’s functions.php or a code snippets plugin):
function bl_get_link( string $field_name, string $key ) {
$field_value = get_post_meta( get_the_ID(), $field_name, true );
if ( $field_value && isset( $field_value[$key] ) ) {
return $field_value[$key];
}
}
and use it in Bricks like this:
{echo:bl_get_link(page_link,title)}
{echo:bl_get_link(page_link,url)}
where page_link
is the field name.
5 comments
Rich
Is there a way to get the title of a linked page from a Page Link flie type field in acf?
Sridhar Katakam
As mentioned in the documentation at https://www.advancedcustomfields.com/resources/page-link/#template-usage
> The Page Link field will return either a single URL or array of URLs. To get more data from a selected post, please use the post object field instead.
it is better to use a Post Object type of field when you need other data about the linked post.
Rich
Thanks Sridhar, I've made that change and now, after setting up a custom function using "Filter: bricks/code/echo_function_names" I can now echo the post title in a button as required.
Rafal
Is it gonna work if Link is inside ACF Repeater?
Sridhar Katakam
Yes, it does.
There is no need to use a custom function now.
Title:
{acf_event_organizers_page_link:array_value|title}
URL:
{acf_event_organizers_page_link:array_value|url}
Target:
{acf_event_organizers_page_link:array_value|target}
where event_organizers is the Repeater name and page_link is the Link-type field's name.