• Resolved barnwoodstar

    (@barnwoodstar)


    Hello! I’m looking to add the default woocommerce sorting dropdown menu to the product list on the store pages. I’ve tried numerous methods but haven’t gotten it to work yet. I’ve created a custom store page (code below). OR I would like to sort the products by sale items, if I can’t add a sorting menu. Thanks in advance!!

    <?php
    /**
     * The Template for displaying all single posts.
     *
     * @package dokan
     * @package dokan - 2014 1.0
     */
    
    if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
    
    $store_user   = get_userdata( get_query_var( 'author' ) );
    $store_info   = dokan_get_store_info( $store_user->ID );
    $map_location = isset( $store_info['location'] ) ? esc_attr( $store_info['location'] ) : '';
    
    get_header( 'shop' );
    ?>
    
    <?php woocommerce_breadcrumb(); ?>
    
    <div class="main wrap cf">
        <?php do_action( 'woocommerce_before_main_content' ); ?>
    	<div class="row">
    		<div class="col-8 main-content">
    
        <div id="dokan-primary" class="dokan-single-store dokan-w8 page-content">
            <div id="dokan-content" class="store-page-wrap woocommerce" role="main">
    
                <?php dokan_get_template_part( 'store-header' ); ?>
    
                <?php do_action( 'dokan_store_profile_frame_after', $store_user, $store_info ); ?>
    
                <?php if ( have_posts() ) { ?>
    
                    <div class="seller-items">
    		    <?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 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' );
    		     ?>
    
                    </div>
    
                    <?php //dokan_content_nav( 'nav-below' ); ?>
    
                <?php } else { ?>
    
                    <p class="dokan-info"><?php _e( 'No products were found of this vendor!', 'dokan-lite' ); ?></p>
    
                <?php } ?>
            </div>
    
        </div><!-- .dokan-single-store -->
    
    		</div><!-- main content -->
    
    		<?php if ( dokan_get_option( 'enable_theme_store_sidebar', 'dokan_general', 'off' ) == 'off' ) { ?>
    <aside class="col-4 sidebar" style="position: relative; overflow: visible; box-sizing: border-box; min-height: 1px;">
            <div id="dokan-secondary" class="dokan-clearfix dokan-w3 dokan-store-sidebar" role="complementary" style="margin-right:3%;">
                <div class="dokan-widget-area widget-collapse">
                     <?php do_action( 'dokan_sidebar_store_before', $store_user, $store_info ); ?>
                    <?php
                    if ( ! dynamic_sidebar( 'sidebar-store' ) ) {
    
                        $args = array(
                            'before_widget' => '<aside class="widget">',
                            'after_widget'  => '</aside>',
                            'before_title'  => '<h3 class="widgettitle">',
                            'after_title'   => '</h3>',
                        );
    
                        if ( class_exists( 'Dokan_Store_Location' ) ) {
                            the_widget( 'Dokan_Store_Category_Menu', array( 'title' => __( 'Store Categories', 'dokan-lite' ) ), $args );
    
                            if ( dokan_get_option( 'store_map', 'dokan_general', 'on' ) == 'on' ) {
                                the_widget( 'Dokan_Store_Location', array( 'title' => __( 'Store Location', 'dokan-lite' ) ), $args );
                            }
    
                            if ( dokan_get_option( 'contact_seller', 'dokan_general', 'on' ) == 'on' ) {
    			    the_widget( 'Dokan_Store_Contact_Form', array( 'title' => __( 'Contact Vendor', 'dokan-lite' ) ), $args );
                            }
                        }
    
                    }
                    ?>
    		<?php if ( is_active_sidebar( 'seller-sidebar-1' ) ) : ?>
        		<?php dynamic_sidebar( 'seller-sidebar-1' ); ?>
    		<?php endif; ?>
                    <?php do_action( 'dokan_sidebar_store_after', $store_user, $store_info ); ?>
                    <?php do_action( 'dokan_sidebar_store_after', $store_user, $store_info ); ?>
    		
                </div>
    		<?php //Bunyad::core()->theme_sidebar(); ?>
            </div><!-- #secondary .widget-area -->
    </aside>
        <?php
        } else {
            get_sidebar( 'sidebar' );
    	//Bunyad::core()->theme_sidebar();
        }
        ?>		
    
    		
    	</div><!-- row -->
    
    <?php do_action( 'woocommerce_after_main_content' ); ?>
    
    </div><!-- main wrap -->
    
    <?php get_footer( 'shop' ); ?>
Viewing 4 replies - 1 through 4 (of 4 total)
  • Hello @barnwoodstar,

    I think you can add your own sorting box then send the value of the shorting field through the URL by using get parameter. After that use this dokan_seller_listing_argsfilter to receive the get parameter and then filter your vendor store.

    As this needs custom coding support for that reason we are unable to provide the full code for this function.

    Thread Starter barnwoodstar

    (@barnwoodstar)

    Hi Nazmul,

    Thanks so much for pointing me in the general direction ?? I really appreciate it.

    I know that you can’t provide the code but I do have one question I’m wondering if you can answer. On the store template (above) there is the action ‘do_action( ‘woocommerce_before_shop_loop’ );’ – would you be able to tell me why this doesn’t display the sorting dropdown like all the other template files?

    Thanks again!!

    Hello @barnwoodstar,

    Thanks for getting back to me. If you can check the wc-template-hooks.php file and this action add_action( 'woocommerce_before_shop_loop', 'woocommerce_catalog_ordering', 30 ); then you will see that the function woocommerce_catalog_ordering was called on wc-template-functions.php file. I have tried and found that it is not possible to show the ordering on the store page because there is some condition-

    if ( 1 === (int) $wp_query->found_posts || ! woocommerce_products_will_display() || $wp_query->is_search() ) {
    			return;
    }

    Now, if you want to do then you may handle the query manually.

    Thread Starter barnwoodstar

    (@barnwoodstar)

    Hi Nazmul,

    Okay, thank you for your help!

Viewing 4 replies - 1 through 4 (of 4 total)
  • The topic ‘Add Sorting Dropdown to Store Page’ is closed to new replies.