4

woocommerceショップページにあるすべての製品をカテゴリに分類する必要があります。デフォルトでは、製品が異なるカテゴリに属していても、すべて同じリストに表示されます。カテゴリ タイトルの下の個別のリストに各カテゴリがあると便利です。

4

2 に答える 2

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_」を広告します。したがって、属性の名前がジャンルである場合、product_cat を pa_genre に置き換えます。

また、おそらく交換できます

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"]
于 2013-08-25T00:40:59.727 に答える
0

これを自分のページに直接貼り付けただけで、うまくいきました-

<?php echo do_shortcode( '[product_category category="category name"]'); ?>
于 2014-04-29T11:04:14.197 に答える