The ACF Dynamic Shortcode serves as a versatile tool for accessing values stored in Advanced Custom Fields within WordPress. It enables specific data retrieval from fields, including options, terms, and user data. This shortcode is particularly beneficial for developers and content managers who require dynamic content presentation in WordPress pages or posts.
Syntax
Utilize the ACF Dynamic Shortcode with the following structure:
{acf:field_name}
field_namerefers to the desired ACF field for data extraction.
Key Arguments
idDefines the ID for the post, term or user from which the field data is retrieved.{acf:field @ID=3} default is post
{acf:field @ID=3 post}
{acf:field @ID=27 term}
{acf:field @ID=25 user}optionIndicates that the field is an options field.{acf:field @option}userSpecifies that the field is related to a user's data.{acf:field @user} current user
{acf:field @ID=53 user}termUsed when the field is associated with a taxonomy term.{acf:field @term} current term
{acf:field @ID=72 term}formatDetermines whether to apply ACF formatting to the field value.{acf:field @format}
{acf:field @format ID=3}
{acf:field @format ID=23 user}
settingUsed for getting the setting of an ACF Field, for example its default value, label.{acf:field @setting=default_value}
{acf:field @setting=default_value ID=3}
{acf:field @setting=default_value ID=23 user}
{acf:field @setting=label}
{acf:field @setting=name}
Examples
Fetch a Field from a Specific Post
{acf:price@id=15}This shortcode retrieves the
pricefield from the post with ID 15.Get User-specific Field Data
{acf:bio@user}This example pulls the
biofield for the current logged-in user.Retrieve an Options Field Value
{acf:color@option}This will get the value of the
coloroptions field.Access Term-related Field Data
{acf:ingredients@term id=5}Here, the shortcode fetches the
ingredientsfield from the term with ID 5.Obtain a Field with ACF Formatting
{acf:gallery@format}This example returns the
galleryfield with ACF's formatting applied.Get the default value of a field
{acf:name@setting=default_value}This will display the default value that was set for the field
namein the ACF Fields settings.
ACF Loop
Pass as the first argument the name of the field and as second the template that should be printed at each iteration. Say we have a pizza repeater with a subfield called name and one quantity. Than you can print them all in a list with the following shortcode
{acf-loop:pizza-toppings
[<li>name: {acf:name} qty:{acf:quantity}]
}Subfields in ACF Loop
If you wish to retrieve the value of a subfield within an ACF loop, you can call it as a normal ACF field {acf:field_id}. Note that in this case it is not compatible with the ID keyarg.
ACF Field within a Group
If you wish to retrieve the value of a field inside a group you should use this syntax:
{acf:group_name_field_id}The group name separated by an underscore must be entered as argument.
ACF Flexible Content fields
You can dynamically loop through the rows of an ACF Flexible Content field and conditionally render templates for each layout. The general structure is:
{acf-loop:<field_name>
{switch:{acf-row:layout}
"<layout_name>" [<template_for_layout>]
...
<default_template>
}
}<field_name>: The name of the ACF Flexible Content field.<layout_name>: The identifier of each layout in the Flexible Content field.<template_for_layout>: The template to display for a specific layout.<default_template>(optional): A fallback template for unrecognized layouts.
Example
Suppose you have a Flexible Content field called page_sections with the following layouts:
hero_sectiontext_block
Here’s how you can render different HTML templates for each layout:
{acf-loop:page_sections
{switch:{acf-row:layout}
"hero_section" [<section class="hero">{acf:hero_title}</section>]
"text_block" [<div class="text-block">{acf:text_content}</div>]
}
}{acf:hero_title}: Fetches the ACF fieldhero_titlefor the current row.
Special Privileges
Certain operations, such as accessing private data or specific user fields, necessitate the use of Power Shortcodes, which possess comprehensive privileges.
