This issue came up in a recent support request of mine, and I want to post it here for further discussion.
Accordions only allow text/html in their content. The only cornerstone-way to place complex (formated and styled) content in there is through components, formerly global blocks. So far so good.
Sometimes the accordion is placed inside a loop, e.g. to create a list of FAQs. The data for the FAQ may be sitting in an ACF, and the loop reads that data in, you can reference it with the appropriate {{dc:… }} fields in the header and content of the accordion. This works well if the FAQ entries are simple or formated text. So far so good.
But let’s say now that the answers of the FAQ are always standardized formated “articles”, with headline, an image, maybe a bullet list, and a paragraph of text. No problem to set this “article” up as a component, and put the component shortcode into the content of the accordion.
But the component is executed BEFORE the looper is executed. For example, if the “article” contains a text element with {{dc:post:titel}} in it, that will turn into static text (the titel of the page that contains the looper) first, only then the looper will be executed, and it will result in several (senseless) identical copies of stuff, because there are no “live” DC-fields left anymore to populate the “article” with content from the FAQ post type.
This is specific to the accordion. If I place the same component shortcode (the “article”) into a text field (which is in a looper), the component is NOT executed first, but the DC-fields remain live and are being looped over in the appropriate context set up by the looper.
To me, that seems like an implementation bug in accordions.