プラグインWooCommerceのwoocommerce_default_catalog_orderby_optionsフィルタの使用方法・解説

概要

woocommerce_default_catalog_orderby_options フィルタは、WooCommerceで商品のデフォルトの並び順オプションを変更するためのフックです。このフィルタを使用することで、カタログページや商品一覧ページで表示される商品の並び順の選択肢をカスタマイズすることができます。

よく使われる機能には以下のものがあります。

  1. デフォルトの並び順を変更する
  2. 特定の条件に基づいて並び順オプションを追加する
  3. 不要なデフォルトの並び順を削除する
  4. SEO効果のために特定の順序に設定する
  5. 商品の特異性(新商品やセール品など)に基づいて表示順を動的に変更する
  6. カスタムオーダー機能を追加する

構文

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')];
}

デフォルトの並び順を「名前」および「価格」で上書きします。

この関数について質問する


上の計算式の答えを入力してください