Skip to content

Instantly share code, notes, and snippets.

@WhiteHatJoker
Created October 18, 2021 22:44
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save WhiteHatJoker/d432a22eccfc6abc00a4127fe0ac0da6 to your computer and use it in GitHub Desktop.
Save WhiteHatJoker/d432a22eccfc6abc00a4127fe0ac0da6 to your computer and use it in GitHub Desktop.
Changing sidebar on wc vendor page so that it is different from main shop page

Changing sidebar on wc vendor page so that it is different from main shop page#

If you are using WC Vendors Plugin you may notice that vendor pages inherit the shop page sidebar by default when most of the time they are irrelevant for the vendor pages. That is because WC Vendors is using the archive-product.php file which is also used for shop page views. To solve this issue we would have to update our archive-product.php with the conditional.

Installation

  1. Just copy the archive-product.php to your current theme folder/woocommerce/
  2. Create a separate sidebar for vendor pages under Aappearance->Widgets and then update the name of widget area 'makers' on line 120 of archive-product.php with your newly created widget area name.
  3. You have a new widget are that you could use now.

Manual installation if you have different version of archive-product.php or custom code there

Instead of the line 114 that was <?php do_action( 'woocommerce_sidebar' ); ?> put :

<?php $vendor_shop = urldecode( get_query_var( 'vendor_shop' ) );
$vendor_id   = WCV_Vendors::get_vendor_id( $vendor_shop );
if ( !$vendor_id ) {
  do_action( 'woocommerce_sidebar' );
} else { ?>
  <div id="sidebar" class="sidebar fusion-widget-area fusion-content-widget-area" style="float: left;">
  <?php   dynamic_sidebar( 'makers' ); ?>
  </div>
<?php } ?>

Note: don't forget to replace 'makers' with your widget area name.

<?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.com/document/template-structure/
* @author WooThemes
* @package WooCommerce/Templates
* @version 2.0.0
*/
if ( ! defined( 'ABSPATH' ) ) {
exit; // Exit if accessed directly
}
get_header( 'shop' ); ?>
<?php
/**
* woocommerce_before_main_content hook.
*
* @hooked woocommerce_output_content_wrapper - 10 (outputs opening divs for the content)
* @hooked woocommerce_breadcrumb - 20
*/
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
/**
* woocommerce_archive_description hook.
*
* @hooked woocommerce_taxonomy_archive_description - 10
* @hooked woocommerce_product_archive_description - 10
*/
do_action( 'woocommerce_archive_description' );
?>
</header>
<?php if ( have_posts() ) : ?>
<?php
/**
* woocommerce_before_shop_loop hook.
*
* @hooked woocommerce_result_count - 20
* @hooked woocommerce_catalog_ordering - 30
*/
do_action( 'woocommerce_before_shop_loop' );
?>
<?php woocommerce_product_loop_start(); ?>
<?php woocommerce_product_subcategories(); ?>
<?php while ( have_posts() ) : the_post(); ?>
<?php wc_get_template_part( 'content', 'product' ); ?>
<?php endwhile; // end of the loop. ?>
<?php woocommerce_product_loop_end(); ?>
<?php
/**
* woocommerce_after_shop_loop hook.
*
* @hooked woocommerce_pagination - 10
*/
do_action( 'woocommerce_after_shop_loop' );
?>
<?php elseif ( ! woocommerce_product_subcategories( array( 'before' => woocommerce_product_loop_start( false ), 'after' => woocommerce_product_loop_end( false ) ) ) ) : ?>
<?php
/**
* woocommerce_no_products_found hook.
*
* @hooked wc_no_products_found - 10
*/
do_action( 'woocommerce_no_products_found' );
?>
<?php endif; ?>
<?php
/**
* woocommerce_after_main_content hook.
*
* @hooked woocommerce_output_content_wrapper_end - 10 (outputs closing divs for the content)
*/
do_action( 'woocommerce_after_main_content' );
?>
<?php
/**
* woocommerce_sidebar hook.
*
* @hooked woocommerce_get_sidebar - 10
*/
$vendor_shop = urldecode( get_query_var( 'vendor_shop' ) );
$vendor_id = WCV_Vendors::get_vendor_id( $vendor_shop );
if ( !$vendor_id ) {
do_action( 'woocommerce_sidebar' );
} else { ?>
<div id="sidebar" class="sidebar fusion-widget-area fusion-content-widget-area" style="float: left;">
<?php dynamic_sidebar( 'makers' ); ?>
</div>
<?php } ?>
<?php get_footer( 'shop' ); ?>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment