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

概要

woocommerce_layered_nav_link フィルタは、WooCommerceのレイヤードナビゲーションにおけるリンクの生成をカスタマイズするためのフックです。このフィルタを使用すると、製品のフィルタリングオプションを表示する際に生成されるHTMLを変更できます。これにより、特定のニーズに応じたカスタマイズが可能となります。このフィルタは、主に以下のような機能を実装する際によく使用されます。

  1. フィルタリンクのテキストを変更する
  2. フィルタリンクのCSSクラスを追加する
  3. リンクのURLを変更する
  4. ダイナミックなパラメータをリンクに付与する
  5. レイヤードナビゲーションの外観をカスタマイズする
  6. 特定の条件に基づいてリンクを条件付きで表示または非表示にする

構文

add_filter( 'woocommerce_layered_nav_link', 'custom_layered_nav_link', 10, 3 );

パラメータ

  • $link (string): 生成されたリンクのHTML。
  • $term (WP_Term): フィルタリングされるタームオブジェクト。
  • $taxonomy (string): 使用されるタクソノミーの名称。

戻り値

  • (string): フィルタリングされたリンクのHTML。

対応バージョン

  • WooCommerce: 3.0以上
  • 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_layered_nav_link', 'change_layered_nav_link_text', 10, 3 );

function change_layered_nav_link_text( $link, $term, $taxonomy ) {
    if ( $taxonomy == 'product_cat' ) {
        return str_replace( 'カテゴリー', '商品カテゴリー', $link );
    }
    return $link;
}

このコードは、カテゴリーのフィルタリンクのテキストを「カテゴリー」から「商品カテゴリー」に変更します。

サンプルコード2: フィルタリンクにカスタムCSSクラスを追加する

add_filter( 'woocommerce_layered_nav_link', 'add_custom_class_to_layered_nav_link', 10, 3 );

function add_custom_class_to_layered_nav_link( $link, $term, $taxonomy ) {
    return str_replace( '<a', '<a class="custom-class"', $link );
}

このコードは、すべてのフィルタリンクに「custom-class」というCSSクラスを追加します。

サンプルコード3: リンクのURLを変更する

add_filter( 'woocommerce_layered_nav_link', 'change_layered_nav_link_url', 10, 3 );

function change_layered_nav_link_url( $link, $term, $taxonomy ) {
    return str_replace( 'product-category', 'custom-category', $link );
}

このコードは、生成されたフィルタリンクのURLの「product-category」を「custom-category」に変更します。

サンプルコード4: 特定の条件に基づいてリンクを非表示にする

add_filter( 'woocommerce_layered_nav_link', 'hide_layered_nav_link', 10, 3 );

function hide_layered_nav_link( $link, $term, $taxonomy ) {
    if ( $term->slug == '特定のスラッグ' ) {
        return '';
    }
    return $link;
}

このコードは、特定のスラッグに基づいてフィルタリンクを非表示にします。

サンプルコード5: ダイナミックなパラメータをリンクに付与する

add_filter( 'woocommerce_layered_nav_link', 'add_dynamic_param_to_layered_nav_link', 10, 3 );

function add_dynamic_param_to_layered_nav_link( $link, $term, $taxonomy ) {
    return $link . '?source=dynamic';
}

このコードは、すべてのフィルタリンクの末尾に「?source=dynamic」というクエリパラメータを追加します。

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


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