20th Jul '24
/
0 comments

Bricks Templates Query Loop

In the Bricks forum a user asks:

In the new update in Bricks 1.10
We have templates screenshot feature for templates.
I created a query loop for my templates and I need to call the screenshot of the template in the query loop.
Can anyone help me, please?

Bricks 1.10, currently in beta adds support for Template screenshots.

This setting is disabled by default and can be enabled at Bricks → Settings.

In the Templates dialog inside the editor, screenshots can be generated on-demand (usually for any templates already present before this setting is enabled). Screenshots will be automatically generated for all templates when the setting is on.

If you are looking to output the template names in a Bricks query loop with their screenshots, it is not enough to simply set the Image element’s source to the featured image. This is because the presence of featured image is first checked for the templates and if it is not present, automatically-generated template screenshots are pulled. Templates will typically be using auto-generated screenshots.

The logic for this is defined in /wp-content/themes/bricks/includes/admin.php.

Let’s define a custom function with the above code.

Add the following in child theme‘s functions.php (w/o the opening PHP tag) or a code snippets plugin:

<?php

function bl_get_bricks_template_image_url(): ?string {
    $post_id = get_the_ID();

    // Check if post has a thumbnail
    if ( has_post_thumbnail( $post_id ) ) {
        return get_the_post_thumbnail_url( $post_id, 'thumbnail' );
    } else {
        // Get automatically-generated template screenshot from custom directory
        $wp_upload_dir = wp_upload_dir();
        $custom_dir = $wp_upload_dir['basedir'] . '/' . BRICKS_TEMPLATE_SCREENSHOTS_DIR . '/';
        $custom_url = $wp_upload_dir['baseurl'] . '/' . BRICKS_TEMPLATE_SCREENSHOTS_DIR . '/';
        $existing_files = glob($custom_dir . "template-screenshot-$post_id-*.webp");
        $file_path = $existing_files[0] ?? null;

        if ( $file_path ) {
            return str_replace( $custom_dir, $custom_url, $file_path );
        }
    }

    // Return null if no image is found
    return null;
}

Next, whitelist the bl_get_bricks_template_image_url function.

Ex.:

<?php 

add_filter( 'bricks/code/echo_function_names', function() {
  return [
    'bl_get_bricks_template_image_url'
  ];
} );

You should also add other functions (native or custom) being used in your Bricks instance besides bl_get_bricks_template_image_url. This can be checked at Bricks → Settings → Custom code by clicking the Code review button.

More info on whitelisting can be found here.

Set up a query loop with this PHP in the query editor:

return [
	'post_type' => 'bricks_template',
	'posts_per_page' => 100, // a large number
	'no_found_rows' => true,
];

Sign code.

For showing the template screenshot, add an Image element and set its source to:

{echo:bl_get_bricks_template_image_url}

Get access to all 630 Bricks code tutorials with BricksLabs Pro

Leave the first comment

 

Related Tutorials..

Pro
Masonry for Query Loop in Bricks

Masonry for Query Loop in Bricks

If you are looking to implement masonry with a 'view more' button i.e., click-type of infinite scroll follow this tutorial instead. Updated on 15 Mar…
Categories:
Pro
Dynamic Remaining Posts Count for Load more Button in Bricks

Dynamic Remaining Posts Count for Load more Button in Bricks

A user asked in the Bricks Facebook group: I have a loop of a CPT, showing 10 in a total of 16 posts and a…
Pro
Parent post Bricks query loop

Parent post Bricks query loop

Updated on 5 Feb 2024 In the BricksLabs Facebook group a user asks: Is there a way to output the data of a parent post…
Categories:
Pro
Filtering posts by a group field’s subfield value with Meta Box when using a custom table in Bricks

Filtering posts by a group field’s subfield value with Meta Box when using a custom table in Bricks

Filtering a query loop to output only those posts with the value of a Select subfield of a Group field set to Yes when using…
Categories:
Tags:
Pro
Mixed Post Types Grid in Bricks

Mixed Post Types Grid in Bricks

How to set up a mixed post types grid in Bricks, where you can display both standard posts and custom quote cards in alternating positions.
Categories:
Pro
Hierarchical Posts with Nested Query Loops in Bricks

Hierarchical Posts with Nested Query Loops in Bricks

Learn how to set up nested query loops in Bricks to show hierarchical posts with child posts grouped under their corresponding parent posts
Categories:
How to add a layout toggle on query loops in Bricks

How to add a layout toggle on query loops in Bricks

In this tutorial, we’ll show you how to change the layout of your query loop container based on the click of an icon toggle sitting…
Categories: