最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

woocommerce offtopic - Alter shop page lay-out in OceanWP theme

programmeradmin1浏览0评论

In OceanWP, I want to alter my shop page by a Beaver Builder template so I modified part of the index.php file as follows:

<?php

// BLOG PAGE
if ( is_home() ) {

    /* Beaver Builder generated content for "Posts archive template" */
    echo do_shortcode( '[fl_builder_insert_layout slug="posts-archive-template"]' );

// SHOP PAGE
} elseif ( is_shop() ) {

    /* Beaver Builder generated content for "Shop archive template" */
    echo do_shortcode( '[fl_builder_insert_layout slug="products-archive-template"]' );

// JOBS PAGE
} elseif ( is_post_type_archive( 'jobs' ) ) {

    /* Beaver Builder generated content for "Jobs archive template" */
    echo do_shortcode( '[fl_builder_insert_layout slug="jobs-archive-template"]' );

// OTHER POST PAGES
} else {

    // Loop through posts
    while ( have_posts() ) : the_post(); ?>

        // Some code

    <?php endwhile; 

}
?>

Blog page & jobs page do display the Beaver Builder template, however for the shop page, I don't manage to alter the lay-out. What am I doing wrong here?

In OceanWP, I want to alter my shop page by a Beaver Builder template so I modified part of the index.php file as follows:

<?php

// BLOG PAGE
if ( is_home() ) {

    /* Beaver Builder generated content for "Posts archive template" */
    echo do_shortcode( '[fl_builder_insert_layout slug="posts-archive-template"]' );

// SHOP PAGE
} elseif ( is_shop() ) {

    /* Beaver Builder generated content for "Shop archive template" */
    echo do_shortcode( '[fl_builder_insert_layout slug="products-archive-template"]' );

// JOBS PAGE
} elseif ( is_post_type_archive( 'jobs' ) ) {

    /* Beaver Builder generated content for "Jobs archive template" */
    echo do_shortcode( '[fl_builder_insert_layout slug="jobs-archive-template"]' );

// OTHER POST PAGES
} else {

    // Loop through posts
    while ( have_posts() ) : the_post(); ?>

        // Some code

    <?php endwhile; 

}
?>

Blog page & jobs page do display the Beaver Builder template, however for the shop page, I don't manage to alter the lay-out. What am I doing wrong here?

Share Improve this question edited Jun 8, 2020 at 19:35 BarrieO asked Jun 8, 2020 at 15:52 BarrieOBarrieO 992 silver badges12 bronze badges
Add a comment  | 

1 Answer 1

Reset to default 0

Solution was the following: I had to alter my archive-product.php template file as this one is more specific in the template hierarchy than the index.php one. The archive-product.php took the overhand, so changing my index.php did not have any effect on my shop archive page.

I copied the archive-product.php template file in my child theme & modified it as follows:

<?php
/**
 * The Template for displaying product archives, including the main shop page which is a post type archive
 *
 * This template can be overridden by copying it to yourtheme/woocommerce/archive-product.php.
 *
 * HOWEVER, on occasion WooCommerce will need to update template files and you
 * (the theme developer) will need to copy the new files to your theme to
 * maintain compatibility. We try to do this as little as possible, but it does
 * happen. When this occurs the version of the template file will be bumped and
 * the readme will list any important changes.
 *
 * @see https://docs.woocommerce/document/template-structure/
 * @package WooCommerce/Templates
 * @version 3.4.0
 */

defined( 'ABSPATH' ) || exit;

get_header( 'shop' );

if ( is_shop() ) {

    /* Beaver Builder generated content for "Shop archive template" */
    /* --- */

    echo do_shortcode( '[fl_builder_insert_layout slug="products-archive-template"]' );

} else {

    /* Regular archive page for other shop pages */
    /* --- */

    /**
     * Hook: woocommerce_before_main_content.
     *
     * @hooked woocommerce_output_content_wrapper - 10 (outputs opening divs for the content)
     * @hooked woocommerce_breadcrumb - 20
     * @hooked WC_Structured_Data::generate_website_data() - 30
     */
    do_action( 'woocommerce_before_main_content' );

    ?>
    <header class="woocommerce-products-header">
        <?php if ( apply_filters( 'woocommerce_show_page_title', true ) ) : ?>
            <h1 class="woocommerce-products-header__title page-title"><?php woocommerce_page_title(); ?></h1>
        <?php endif; ?>

        <?php
        /**
         * Hook: woocommerce_archive_description.
         *
         * @hooked woocommerce_taxonomy_archive_description - 10
         * @hooked woocommerce_product_archive_description - 10
         */
        do_action( 'woocommerce_archive_description' );

        ?>
    </header>
    <?php
    if ( woocommerce_product_loop() ) {

        /**
         * Hook: woocommerce_before_shop_loop.
         *
         * @hooked woocommerce_output_all_notices - 10
         * @hooked woocommerce_result_count - 20
         * @hooked woocommerce_catalog_ordering - 30
         */
        do_action( 'woocommerce_before_shop_loop' );

        woocommerce_product_loop_start();

        if ( wc_get_loop_prop( 'total' ) ) {
            while ( have_posts() ) {
                the_post();

                /**
                 * Hook: woocommerce_shop_loop.
                 */
                do_action( 'woocommerce_shop_loop' );

                wc_get_template_part( 'content', 'product' );
            }
        }

        woocommerce_product_loop_end();

        /**
         * Hook: woocommerce_after_shop_loop.
         *
         * @hooked woocommerce_pagination - 10
         */
        do_action( 'woocommerce_after_shop_loop' );
    } else {
        /**
         * Hook: woocommerce_no_products_found.
         *
         * @hooked wc_no_products_found - 10
         */
        do_action( 'woocommerce_no_products_found' );
    }

    /**
     * Hook: woocommerce_after_main_content.
     *
     * @hooked woocommerce_output_content_wrapper_end - 10 (outputs closing divs for the content)
     */
    do_action( 'woocommerce_after_main_content' );

    /**
     * Hook: woocommerce_sidebar.
     *
     * @hooked woocommerce_get_sidebar - 10
     */
    do_action( 'woocommerce_sidebar' );

}

get_footer( 'shop' );
发布评论

评论列表(0)

  1. 暂无评论