WooCommerceを使っていて、関連商品の表示順を調整しようとしても、順番がランダムになるので、調べたら フックを使って、表示順の挙動を変更できるとわかった。
商品の[高度な設定]の中にある[メニューの順序]に入力した順番で、関連商品を表示するには、下のコードを、functons.phpもしくは、my-snow-monkey.phpに追加すると、挙動が変わる。
/* WooCommerce 関連商品 アップセルの表示順をランダムから昇順に変更する */
function my_woocommerce_upsell_display_args( $args ) {
$my_args = array(
'posts_per_page' => $args['posts_per_page'],
'orderby' => 'menu_order', // ここを変更する
'order' => 'ASC',
'columns' => $args['columns'],
);
return $my_args;
}
add_filter( 'woocommerce_upsell_display_args', 'my_woocommerce_upsell_display_args' );
[高度な設定]の中にある[メニューの順序]はこちら↓
カスタマイズを行うのに参考になった記事は、下の3つ。感謝です。
関数リファレンス/WP Query – WordPress Codex 日本語版
woocommerce_upsell_display_args — WordPress filter hook – WordPress at Your Fingertips
woocommerce_upsell_display_args フックが用意されており、これを使うと、関連商品 アップセルの表示順を変更できる。
- ‘orderby’ => ‘menu_order’
- ‘menu_order’にすることで、「メニューの順序」で並ぶ順番を定義している
- ‘order’ => $order
- 昇順、小さな値から大きな値へ順番に並べる定義をしている
これらのパラメーターをフックからカスタマイズし、関連商品の表示順を「メニューの順序の順番」で表示できるようになった。