> For the complete documentation index, see [llms.txt](https://wplake.gitbook.io/advanced-views/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://wplake.gitbook.io/advanced-views/integrations/themes/bricks/displaying-custom-fields.md).

# Displaying custom fields in the Bricks theme

{% hint style="info" %}
This guide covers the entire [Bricks theme](https://bricksbuilder.io/), including **Bricks Builder** as an integrated part of Bricks. There is no standalone Bricks Builder guide, as it cannot be used independently.
{% endhint %}

Using [*Layouts*](/advanced-views/getting-started/first-layout.md) from Advanced Views, you can display any custom fields in [Bricks](https://bricksbuilder.io/). Smart templates [give you complete control](/advanced-views/getting-started/key-aspects.md) over the markup and display logic without extra hassle.&#x20;

{% hint style="success" %}
Advanced Views natively supports fields from multiple providers:

1. [WordPress fields](/advanced-views/fields/wordpress-fields.md) (like page title, excerpt, user name, etc)
2. [Advanced Custom Fields](/advanced-views/fields/meta-plugins/advanced-custom-fields.md) (any field type)
3. [MetaBox fields](/advanced-views/fields/meta-plugins/meta-box-fields.md) (any field type)
4. [Pods fields](/advanced-views/fields/meta-plugins/pods-fields.md) (any field type)
5. [WooCommerce Product fields](/advanced-views/fields/woo-product-fields.md) (like price, SKU, height, etc)

To display [other fields](/advanced-views/fields/other-fields.md) made by your theme or plugins, just [customize the default Layout template](/advanced-views/layouts/code-fields/custom-template.md).
{% endhint %}

## 1. How to display custom fields on a single page

{% hint style="info" %}
The steps below apply to the Bricks builder. If you edit pages using the Gutenberg editor, refer to our [Gutenberg editor guide](/advanced-views/integrations/editors/gutenberg/displaying-custom-fields.md) instead.
{% endhint %}

In Advanced Views, *Layouts* are embedded using native WordPress shortcodes, which you can paste anywhere in the Bricks builder:

<figure><img src="https://2293383029-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FN2nAC4pTDjEmDu8ZkLB2%2Fuploads%2FNwz5kMTobrjYRuiSQWA9%2Fbricks-single-page.png?alt=media&amp;token=4164ae40-7399-454c-9ba8-2edfae6d2c27" alt=""><figcaption></figcaption></figure>

&#x20;

1. [Create a *Layout*](/advanced-views/getting-started/first-layout.md)
2. Add target fields in the *Fields* tab and save the *Layout*
3. Copy a [Layout embedding shortcode](/advanced-views/layouts/embedding-shortcode.md)
4. Edit the target page with the Bricks builder
5. **Within Bricks**: Click on the plus and add a [Shortcode element](https://academy.bricksbuilder.io/builder/elements/wordpress/shortcode/)
6. **Within the Shortcode element:** Paste the *Layout* embedding shortcode
7. Save the page and visit it to see the result

To change the default field appearance, open the created *Layout* and [customize the *Layout* template](/advanced-views/layouts/code-fields/custom-template.md).&#x20;

{% hint style="success" %}
By default, *Layout* displays chosen fields of the current page. You can display fields from other sources by tuning the [Layout shortcode arguments](/advanced-views/layouts/embedding-shortcode.md).&#x20;
{% endhint %}

## 2.  How to display custom fields in the Query Loop

The [Query Loop](https://academy.bricksbuilder.io/builder/dynamic-content/query-loop/) is a Bricks container feature that allows you to query and display posts. With Advanced Views, you can not only display custom fields inside the loop but also add conditions, merge fields, and modify field value output.

<figure><img src="https://2293383029-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FN2nAC4pTDjEmDu8ZkLB2%2Fuploads%2F8cLu7pfK2KgNXPWjYR6D%2Fbricks-query-loop.png?alt=media&amp;token=3fe953d0-b04c-485b-b8ab-5487663f2d22" alt=""><figcaption></figcaption></figure>

1. [Create a *Layout*](/advanced-views/getting-started/first-layout.md)
2. Add target fields in the *Fields* tab and save the *Layout*
3. Copy a [Layout embedding shortcode](/advanced-views/layouts/embedding-shortcode.md)
4. Open the target page with the [Query Loop](https://academy.bricksbuilder.io/builder/dynamic-content/query-loop/) (or enable it for any container element)
5. **Within the Container Builder**: click on the Item Container element
6. **Within Bricks**: click on the plus and add a [Shortcode element](https://academy.bricksbuilder.io/builder/elements/wordpress/shortcode/)
7. **Within the Shortcode element**: Paste the *Layout* embedding shortcode
8. Save the page and visit it to see the result

The **Query Loop Container** is rendered for each found post, while the ***Layout*** displays the custom fields for that specific post.

{% hint style="success" %}
The **Query Loop** is a good choice for simple queries. If you need advanced filtering, sorting, or other query options, use the [*Post Selection*](/advanced-views/getting-started/first-post-selection.md) feature of Advanced Views.
{% endhint %}

## 3. How to display custom fields in a Template

### 2.1) Custom Post Type template

If multiple pages or Custom Post Type (CPT) items share the same set of custom fields, you don't need to embed a *Layout* in each item individually. Instead, embed the *Layout* in the appropriate [Bricks template](https://academy.bricksbuilder.io/builder/features/create-template/) so it is rendered automatically for every corresponding item:

<figure><img src="https://2293383029-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FN2nAC4pTDjEmDu8ZkLB2%2Fuploads%2FbTuFQAOb3pg6KcqQx5Ta%2Fbricks-templates.png?alt=media&amp;token=d7862640-25f6-4380-8eae-b35e640fa698" alt=""><figcaption></figcaption></figure>

<figure><img src="https://2293383029-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FN2nAC4pTDjEmDu8ZkLB2%2Fuploads%2F9X13xmkpV9zpPMKp8Wmj%2Fbricks-single-template.png?alt=media&amp;token=dd7b5e38-5ccb-4229-89de-785d543ca6c3" alt=""><figcaption></figcaption></figure>

1. [Create a *Layout*](/advanced-views/getting-started/first-layout.md)
2. Add target fields in the *Fields* tab and save the *Layout*
3. Copy a [Layout embedding shortcode](/advanced-views/layouts/embedding-shortcode.md)
4. Open the [Bricks Templates](https://academy.bricksbuilder.io/builder/features/create-template/) (Dashboard → Bricks → Templates)
5. Edit any template (or create a new one)&#x20;
6. **Within Bricks**: click on the plus and add a [Shortcode element](https://academy.bricksbuilder.io/builder/elements/wordpress/shortcode/)
7. **Within the Shortcode element**: Paste the *Layout* embedding shortcode
8. Save the template and visit any CPT item to see the result

{% hint style="warning" %}
If you created a new template for a CPT, make sure you have configured the **Template Conditions** so that the Template is applied to all your CPT items:
{% endhint %}

<figure><img src="https://2293383029-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FN2nAC4pTDjEmDu8ZkLB2%2Fuploads%2FUCOxxIBvc3LxPD10R8G6%2Fbricks-template-conditions.png?alt=media&amp;token=93ac3b55-225b-40de-8fc9-42ba5db89e95" alt=""><figcaption></figcaption></figure>

When the template is rendered, the embedded *Layout* automatically displays the custom fields for the current page, post, or other content item using that template.

{% hint style="success" %}
*Layout* IDs are unique string identifiers, not WordPress post IDs. Unlike post IDs, they remain unchanged when *Layouts* are exported and imported, ensuring consistent references across different environments, such as staging and production.
{% endhint %}

### 2.2) Header/Footer Block

{% hint style="info" %}
A common use case is [displaying custom fields from an Options page](/advanced-views/field-sources/options-page.md) in the site footer.&#x20;
{% endhint %}

In Bricks, Header and Footer templates are edited in the same way as any other templates. The only difference in this integration is the shortcode modification: you need to add the `object-id` argument to load fields from the Options page:

1. [Create a *Layout*](/advanced-views/getting-started/first-layout.md)
2. Add target fields in the *Fields* tab and save the *Layout*
3. Copy a [Layout embedding shortcode](/advanced-views/layouts/embedding-shortcode.md)
4. Modify [*Layout* shortcode](/advanced-views/layouts/embedding-shortcode.md): add `object-id="options"` argument (to [display fields from the Options page](/advanced-views/field-sources/options-page.md))
5. Open the [Bricks Templates](https://academy.bricksbuilder.io/builder/features/create-template/) (Dashboard → Bricks → Templates)
6. Edit Header/Footer template (or create a new one)
7. **Within Bricks**: click on the plus and add a [Shortcode element](https://academy.bricksbuilder.io/builder/elements/wordpress/shortcode/)
8. **Within the Shortcode element**: Paste the *Layout* embedding shortcode
9. Save the template and visit any page to see the result

{% hint style="info" %}
Unlike page-specific custom fields, custom fields from an Options page are site-wide. As a result, the same values are displayed on every site page.
{% endhint %}
