概要
woocommerce_default_catalog_orderby_options
フィルタは、WooCommerceで商品のデフォルトの並び順オプションを変更するためのフックです。このフィルタを使用することで、カタログページや商品一覧ページで表示される商品の並び順の選択肢をカスタマイズすることができます。
よく使われる機能には以下のものがあります。
- デフォルトの並び順を変更する
- 特定の条件に基づいて並び順オプションを追加する
- 不要なデフォルトの並び順を削除する
- SEO効果のために特定の順序に設定する
- 商品の特異性(新商品やセール品など)に基づいて表示順を動的に変更する
- カスタムオーダー機能を追加する
構文
add_filter('woocommerce_default_catalog_orderby_options', 'custom_function_name');
パラメータ
$options
: 現在のオーダーオプションの配列。
戻り値
- 設定されたオーダーオプションの配列。
使用可能なプラグインWooCommerceのバージョン
- WooCommerce 3.0以降
使用可能なWordPressのバージョン
- WordPress 4.0以降
この関数のアクションでの使用可能性
アクション | 使用例 |
---|---|
mu_plugin_loaded | |
registered_post_type | |
plugins_loaded | |
wp_roles_init | |
setup_theme | |
after_setup_theme | |
set_current_user | |
init | |
register_sidebar | |
wp_loaded | |
send_headers | |
parse_query | |
pre_get_posts | |
wp | |
template_redirect | |
get_header | |
wp_head |
サンプルコード
サンプル1: デフォルトの並び順を変更する
add_filter('woocommerce_default_catalog_orderby_options', 'change_default_orderby');
function change_default_orderby($options) {
$options['price'] = __('Price: low to high', 'your-text-domain');
return $options;
}
このサンプルはデフォルトの並び順を「価格が低い順」に変更します。
サンプル2: 新しい並び順オプションを追加する
add_filter('woocommerce_default_catalog_orderby_options', 'add_custom_orderby');
function add_custom_orderby($options) {
$options['popularity'] = __('Popularity', 'your-text-domain');
return $options;
}
新たに「人気順」を並び順オプションに追加します。
サンプル3: デフォルトの並び順を削除する
add_filter('woocommerce_default_catalog_orderby_options', 'remove_unsupported_orderby');
function remove_unsupported_orderby($options) {
unset($options['rating']);
return $options;
}
「評価順」を並び順オプションから削除します。
サンプル4: カスタムオーダーを設定する
add_filter('woocommerce_default_catalog_orderby_options', 'custom_ordering_for_special_offer');
function custom_ordering_for_special_offer($options) {
if (is_product_category('special-offers')) {
$options['date'] = __('Date', 'your-text-domain');
}
return $options;
}
「特別オファー」カテゴリーの商品ページでだけ「日付順」を表示するように設定します。
サンプル5: デフォルトの並び順を別のオプションで上書き
add_filter('woocommerce_default_catalog_orderby_options', 'overwrite_default_order');
function overwrite_default_order($options) {
return ['name' => __('Name', 'your-text-domain'), 'price' => __('Price', 'your-text-domain')];
}
デフォルトの並び順を「名前」および「価格」で上書きします。