概要
woocommerce_layered_nav_link
フィルタは、WooCommerceのレイヤードナビゲーションにおけるリンクの生成をカスタマイズするためのフックです。このフィルタを使用すると、製品のフィルタリングオプションを表示する際に生成されるHTMLを変更できます。これにより、特定のニーズに応じたカスタマイズが可能となります。このフィルタは、主に以下のような機能を実装する際によく使用されます。
- フィルタリンクのテキストを変更する
- フィルタリンクのCSSクラスを追加する
- リンクのURLを変更する
- ダイナミックなパラメータをリンクに付与する
- レイヤードナビゲーションの外観をカスタマイズする
- 特定の条件に基づいてリンクを条件付きで表示または非表示にする
構文
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」というクエリパラメータを追加します。