概要
woocommerce_taxonomy_objects_$NAME
は、WooCommerceで特定のタクソノミー(商品カテゴリーやタグなど)のオブジェクトを変更したり、フィルタリングしたりするためのフックです。このフィルタは、特定のタクソノミーのオブジェクトリストを取得した後に実行されます。以下のようなシナリオでよく使用されます。
- 特定の条件に基づいて商品のカテゴリーを除外する。
- 商品のタグを変更する。
- タクソノミーに関連するオブジェクトを追加する。
- 認証されたユーザーに特定のカテゴリの表示を制御する。
- フロントエンドでの商品表示をカスタマイズする。
- 商品に関連するデータの取得を最適化する。
このフィルタの構文は以下の通りです。
apply_filters( 'woocommerce_taxonomy_objects_$NAME', $terms, $taxonomies, $args );
パラメータ
$terms
: 取得されたタクソノミーオブジェクトの配列。$taxonomies
: タクソノミーの配列(たとえば、’product_cat’や’product_tag’など)。$args
: タクソノミーを取得するための引数配列。
戻り値
- フィルタ後のタクソノミーオブジェクトの配列が戻されます。
使用可能なバージョン
- WooCommerce: v2.0以降
- WordPress: v4.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_taxonomy_objects_product_cat', 'exclude_specific_category' );
function exclude_specific_category( $terms ) {
$exclude_ids = array( 10, 15 ); // 除外したいカテゴリーのID
return array_diff( $terms, $exclude_ids );
}
このサンプルは、特定のカテゴリーIDを持つ商品のカテゴリーを除外しています。
サンプル2: 特定のタグを追加する
add_filter( 'woocommerce_taxonomy_objects_product_tag', 'add_custom_product_tag' );
function add_custom_product_tag( $terms ) {
$terms[] = 'Custom Tag'; // カスタムタグを追加
return $terms;
}
このサンプルでは、特定のタグリストにカスタムタグを追加しています。
サンプル3: ロールによる表示制御
add_filter( 'woocommerce_taxonomy_objects_product_cat', 'filter_categories_by_role' );
function filter_categories_by_role( $terms ) {
if ( ! current_user_can( 'administrator' ) ) {
$terms = array_filter( $terms, function( $term ) {
return $term->slug !== 'exclusive-category'; // 除外するカテゴリー
} );
}
return $terms;
}
このサンプルコードは、管理者以外のユーザーが特定のカテゴリーを表示できないようにフィルタリングします。
サンプル4: カスタム条件での商品表示
add_filter( 'woocommerce_taxonomy_objects_product_cat', 'custom_condition_taxonomies' );
function custom_condition_taxonomies( $terms ) {
foreach ( $terms as $key => $term ) {
if ( $term->count < 5 ) { // 商品数が5未満のカテゴリーを除外
unset( $terms[$key] );
}
}
return $terms;
}
このサンプルは、商品数が5未満のカテゴリーを除外します。
サンプル5: タクソノミーのオブジェクトのカスタマイズ
add_filter( 'woocommerce_taxonomy_objects_product_cat', 'modify_taxonomy_objects' );
function modify_taxonomy_objects( $terms ) {
foreach ( $terms as $term ) {
$term->description .= ' (Modified)'; // 説明文に文字を追加
}
return $terms;
}
このサンプルコードは、各カテゴリーの説明文に「(Modified)」を追加しています。