在Woocommerce商店页面上将所有产品分类到他们的类别

时间:2013-05-07 18:53:19

标签: wordpress-theming wordpress woocommerce

我需要将woocommerce shop 页面上的所有产品分类。默认情况下,即使产品属于不同类别,也会出现在同一列表中。将每个类别放在类别标题下的单独列表中会很棒。

2 个答案:

答案 0 :(得分:3)

执行此操作的唯一方法是复制和编辑模板文件或使用挂钩。我最喜欢的方法是使用钩子,因为它在进行插件更新时不那么具有侵入性。首先,您要确保将您的woocommerce设置设置为在产品页面上显示类别。然后打开你的主题functions.php文件并将其放入其中:

function order_by_multiple() {
if(function_exists('is_woocommerce')){
if(is_woocommerce()||is_search()||is_product_category())    return ' tm.meta_value, post_title';
}
}
function product_order_join($join){
global $wpdb;
if(function_exists('is_woocommerce')){
if(is_woocommerce()||is_search()||is_product_category()){
$join.= " JOIN " . $wpdb->term_relationships ." tr ON " . $wpdb->posts . ".id = tr.object_id JOIN " . $wpdb->term_taxonomy ." tt ON tt.term_taxonomy_id = tr.term_taxonomy_id AND tt.taxonomy =  'product_cat' JOIN " . $wpdb->terms ." t ON tt.term_id = t.term_id
 join " . $wpdb->woocommerce_termmeta ." tm on tm.woocommerce_term_id = t.term_id and tm.meta_key = 'order' ";}
 }
 return $join;

}
add_filter("posts_join","product_order_join");
if(!is_admin())add_filter("posts_orderby", "order_by_multiple");

将“product_cat”替换为分类法/属性。 对于属性,woocommerce广告在分类名称前面有一个'pa_'。 因此,如果您的attribut的名称是流派,那么您将用pa_genre替换product_cat。

另外,你可以替换

add_filter("posts_orderby", "order_by_multiple");

add_filter('woocommerce_get_catalog_ordering_args',"order_by_multiple");

我还没有机会测试它。

最后,您可以通过几乎所有这些内容并使用以下的woocommerce短代码:

[product_category category="category-slug-name-here" per_page="12" columns="4" orderby="date" order="desc"]

答案 1 :(得分:0)

我只是把它直接插入我的页面,它运行良好 -

<?php echo do_shortcode( '[product_category category="category name"]'); ?>