向子商店页面添加“默认排序”菜单

时间:2013-09-26 作者:Naomi

我是WordPress WooCommerce的新手,我不知道如何在我的购物页面中添加“默认排序”下拉过滤器。我知道它在普通的旧“商店”页面上,但我的导航甚至没有显示该页面(我选择这样设置)。我有类别页面(纸杯蛋糕、气球、毛绒、蛋糕)和子类别页面(例如:纸杯蛋糕口味纸杯蛋糕分类、纸杯蛋糕假日和季节性[等等]),我希望在所有这些独特的页面上都有一个“排序依据(价格、流行度、平均评级、最新)”下拉菜单。

似乎是一件很基本的事情。有人知道怎么做吗?有可能吗?

我使用的是“Shoppest”主题。

这是我的完整存档产品。php页面代码。

<?php

/**

 * The Template for displaying product archives, including the main shop page 
which is a post type archive.

 *

 * Override this template by copying it to yourtheme/woocommerce/archive-
product.php
 *
 * @author      WooThemes
 * @package     WooCommerce/Templates
 * @version     2.0.0
 */


if ( ! defined( \'ABSPATH\' ) ) exit; // Exit if accessed directly


get_header(\'shop\'); ?>


    <?php

        /**
     * Shoppest - remove woocommerce_output_content_wrapper & breadcrumb
     * 
     * 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\');
?>

<?php
    // check sidebar position
    $options = get_option(\'shoppest\');
    $layout = ( isset($options[\'shop_layout\']) && !empty($options[\'shop_layout\']) ) ? $options[\'shop_layout\'] : \'sidebarleft\';
    //echo $option[\'shop_layout\'];
    if ( $layout != \'fullwidth\' ) {
        $cssclass = \'span9\';
        if ( $layout == \'sidebarleft\') $cssclass .= \' contentright\';
    } else {
        $cssclass = \'span12\';
    }
?>

<div role="main" id="content" class="<?php echo $cssclass; ?>">

    <?php // make show page title false ?>

    <?php if ( apply_filters( \'woocommerce_show_page_title\', false ) ) : ?>

        <h1 class="page-title"><?php woocommerce_page_title(); ?></h1>

    <?php endif; ?>

    <?php 
        /*
         *  Shoppest - remove woocommerce_archive_description [ that display description]
         *
         *  @hooked sama_shop_slider - 10
         */
        do_action( \'woocommerce_archive_description\' );
    ?>

    <?php if ( have_posts() ) : ?>

        <?php
            $options = get_option(\'shoppest\');
            $icon_layout = ( isset($options[\'shop_icon_layout\']) ) ? $options[\'shop_icon_layout\'] : true;
        ?>

            <div class="productFilter clearfix">

                <?php
                    /**
                     * Shoppest - remove woocommerce_result_count
                     *
                     * woocommerce_before_shop_loop hook
                     *
                     * @hooked woocommerce_result_count - 20
                     * @hooked woocommerce_catalog_ordering - 30
                     */
                    do_action( \'woocommerce_before_shop_loop\' );
                ?>

                <?php if ($icon_layout) { ?>
                    <div class="displaytBy inline pull-right">
                        <?php _e( \'Display\', \'samathemes\' ); ?>
                        <div class="btn-group">
                            <button id="grid" class="btn btn-primary active"><i class="icon-th"></i></button>
                            <button id="list" class="btn"><i class="icon-list"></i></button>
                        </div>
                    </div><!--end displaytBy-->
                <?php } ?>

            </div><!--end productFilter-->
        <?php woocommerce_product_loop_start(); ?>

            <?php woocommerce_product_subcategories(); ?>

            <?php while ( have_posts() ) : the_post(); ?>

                <?php woocommerce_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_get_template( \'loop/no-products-found.php\' ); ?>

    <?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\');
    ?>

</div> <!-- end span9 -->

<?php
    /**
     * woocommerce_sidebar hook
     *
     * @hooked woocommerce_get_sidebar - 10
     */
    if ( $layout != \'fullwidth\' ) {
        do_action(\'woocommerce_sidebar\');
    }
?>

<?php get_footer(\'shop\'); ?>

1 个回复
SO网友:helgatheviking

看看你的主题是否有archive-product.php woocommerce文件夹中的文件。这是WooCommerce类别模板的副本(显示方式为archive-product.php. 只要模板具有do_action( \'woocommerce_before_shop_loop\' ); 动作挂钩,然后woocommerce_catalog_ordering() 应自动调用优先级为30的函数。。。正如它在代码注释中直接指出的那样。您的主题模板需要为WooCommerce 2.0更新,或者您的主题有意删除了woocommerce_catalog_ordering() 来自的函数woocommerce_before_shop_loop.

<?php
/**
 * The Template for displaying product archives, including the main shop page which is a post type archive.
 *
 * Override this template by copying it to yourtheme/woocommerce/archive-product.php
 *
 * @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\');
    ?>

        <?php if ( apply_filters( \'woocommerce_show_page_title\', true ) ) : ?>

            <h1 class="page-title"><?php woocommerce_page_title(); ?></h1>

        <?php endif; ?>

        <?php do_action( \'woocommerce_archive_description\' ); ?>

        <?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 woocommerce_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_get_template( \'loop/no-products-found.php\' ); ?>

        <?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
         */
        do_action(\'woocommerce_sidebar\');
    ?>

<?php get_footer(\'shop\'); ?>

Updated based on your template code:

仅仅因为您使用的是WooCommerce 2.0,并不意味着您的主题模板已经更新。我已经为好几个客户做了这件事。然而,行动挂钩do_action( \'woocommerce_before_shop_loop\' ); 存在。

我会:

验证它是否在标记(查看源代码)中并被CSS隐藏,检查所有函数是否有可能删除该函数的内容:remove_action(\'woocommerce_before_shop_loop\', \'woocommerce_catalog_ordering\', 30); woocommerce_catalog_ordering()

结束

相关推荐

Wp_Dropdown_Categories-删除 ;

我需要删除的自动添加&nbsp; 在wp_dropdown_categories, 这导致我使用的jQuery multi-select下拉插件出现问题。示例值:<option class=\"level-1\" value=\"120\">&nbsp;&nbsp;&nbsp;Apples&nbsp;&nbsp;(125)</option>