Q. WooCommerceの「商品」の「高度な設定」>「メニューの順序」を使って商品の並び順を自由に制御したいのですが、効きません。
▼変更箇所イメージ
A. contents-builder.phpを編集して並び順を変更することができます。
TCDテーマオプションにて、トップページのコンテンツを作成する「コンテンツビルダー」にある「商品一覧」では、次の3つの並び順のみを提供しているため、WooCommerceの「メニューの順序」は機能しない仕組みとなっています。
- 日付(新しい順)
- 日付(古い順)
- ランダム
そこで、これら以外の並び順を指定するために、contents-builder.phpの該当箇所をコメントアウトし、新たな条件を定義します。
このとき「メニューの順序(Menu Order)」で指定した並び順が適用されるようにします。
カスタマイズ例
編集するファイル: contents-builder.php
編集する箇所: 588行目付近~
if ( 'random' === $cb_content['order'] ) : $cb_query_args['orderby'] = 'rand'; elseif ( 'date2' === $cb_content['order'] ) : $cb_query_args['orderby'] = 'date'; $cb_query_args['order'] = 'ASC'; else : $cb_query_args['orderby'] = 'date'; $cb_query_args['order'] = 'DESC'; endif;
↓コメントアウトして、並び替え対象(orderbyがmenu_order)と並び順(降順DESC)を定義
// if ( 'random' === $cb_content['order'] ) : // $cb_query_args['orderby'] = 'rand'; // elseif ( 'date2' === $cb_content['order'] ) : // $cb_query_args['orderby'] = 'date'; // $cb_query_args['order'] = 'ASC'; // else : // $cb_query_args['orderby'] = 'date'; // $cb_query_args['order'] = 'DESC'; // endif; $cb_query_args['orderby'] = 'menu_order'; $cb_query_args['order'] = 'DESC';
これを応用して、商品のレビュー評価や商品名順などほかの方法にも変更することができます。
▼レビュー評価が高い順
$cb_query_args['orderby'] = 'rating'; $cb_query_args['order'] = 'DESC';
▼商品名順
$cb_query_args['orderby'] = 'title'; $cb_query_args['order'] = 'ASC';
参考情報
Shortcodes included with WooCommerce
orderby – Sorts the products displayed by the entered option. One or more options can be passed by adding both slugs with a space between them. Available options are:
・date – The date the product was published.
・id – The post ID of the product.
・menu_order – The Menu Order, if set (lower numbers display first).
・popularity – The number of purchases.
・rand – Randomly order the products on page load (may not work with sites that use caching, as it could save a specific order).
・rating – The average product rating.
・title – The product title. This is the default orderby mode.
order – States whether the product order is ascending (ASC) or descending (DESC), using the method set in orderby. Defaults to ASC.
この記事は役に立ちましたか?
もし参考になりましたら、下のボタンで教えてください。
今後の記事作成の参考とさせて頂きます!