Take a look at whether or not your theme has an archive-product.php
file in the woocommerce folder. This is a copy of the WooCommerce category template (which is displayed by archive-product.php
. As long as your template has the do_action( 'woocommerce_before_shop_loop' );
action hook then the woocommerce_catalog_ordering()
function should automatically be called with a priority of 30… as it says directly in the code comments. Either your theme templates need to be updated for WooCommerce 2.0 or your theme has intentionally removed the woocommerce_catalog_ordering()
function from the 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:
Just because you are using WooCommerce 2.0 doesn’t mean that your theme’s templates were updated. I have had to do that for several clients. However, the action hook do_action( 'woocommerce_before_shop_loop' );
is present.
I would:
- verify whether it is in the markup (view source) and being hidden by CSS
- check all the functions for something that would remove the function:
remove_action('woocommerce_before_shop_loop', 'woocommerce_catalog_ordering', 30);
- check all the function for a modified definition of
woocommerce_catalog_ordering()
- rename the archive-product.php template to something else temporarily archive-productTEST.php so that WooCommerce will load it’s default template instead
Without access to your site/code that is about all I can suggest.