FiboFilters won’t be displayed for products that are fetched and displayed within page templates, The reasons are:
- FiboFilters doesn’t know that a particular product loop should be considered the main product loop to which filters should be applied.
 - It’s not possible to change FiboFilters configuration in a hook later than 
template_redirect. In case of page templates, this hook is applied much later in the process. 
How to associate filters with products loaded so late in page templates, then? Please follow these steps:
Step 1
Force a “Late init” mode. In our example, we’re using a premade template named Custom Landing Page in the page-templates/custom-landing-page.php file. We’re going to enforce the “Late init” mode on the template:
add_filter( 'fibofilters/request/late_init', function () {
    if ( is_page_template( 'page-templates/custom-landing-page.php' ) ) {
       return true;
    }
    return false;
} );
ⓘLearn how to add this snippet to your WordPress.
Step 2
Indicate product IDs or product objects that should be included during the filtering process:
add_filter( 'fibofilters/request/late_init/base_products', fn() => $products );
ⓘLearn how to add this snippet to your WordPress.
Step 3
The finished template should look like that:
<?php
/**
 * Template Name: Custom Landing Page
 */
get_header(); ?>
    <div id="primary" class="content-area">
        <main id="main" class="site-main" role="main">
            <?php if ( have_posts() ) { ?>
                <header class="woocommerce-products-header">
                    <h1 class="woocommerce-products-header__title page-title"><?php the_title(); ?></h1>
                </header>
                <?php echo do_shortcode( '[fibofilters layout="horizontal" min_screen=1 max_screen=99999]' ); ?>
                <?php echo do_shortcode( '[fibofilters_applied_filters]' ); ?>
                <?php
                $products = wc_get_products( [
                    'limit'    => - 1,
                    'category' => [ 'caps' ],
                ] );
                add_filter( 'fibofilters/request/late_init/base_products', fn() => $products );
                if ( $products ) {
                    wc_get_template( 'loop/loop-start.php' );
                    ?>
                    <?php foreach ( $products as $product ) {
                        $post_object = get_post( $product->get_id() );
                        setup_postdata( $GLOBALS['post'] = &$post_object );
                        wc_get_template_part( 'content', 'product' );
                    ?>
                    <?php } ?>
                    <?php wc_get_template( 'loop/loop-end.php' ); ?>
                    <?php wp_reset_postdata();
                }
                echo do_shortcode( '[fibofilters_show_more_products_btn]' );
 
            } else {
                get_template_part( 'content', 'none' );
            }
            ?>
        </main><!-- #main -->
    </div><!-- #primary -->
<?php
get_footer();
Note:
All filters and UI elements should be added to a template using shortcodes. In the example above we’re displaying:
- Horizontal filters above products, with this shortcode: 
[fibofilters layout="horizontal" min_screen=1 max_screen=99999] - Applied filters below, with this shortcode:
[fibofilters_applied_filters]
It contains all currently selected filter values. - Show more products button below the product loop, with this shortcode:
[fibofilters_show_more_products_btn]. 
You can find more information about adding filters to a non-WooCommerce page in our post about filters location/custom location.