概要
woocommerce_get_cart_contents
フィルタは、WooCommerceのカート内のアイテムを取得する際に、その内容を変更するためのフックです。このフィルタは、開発者が商品の情報を加工したり、新しい機能を追加するのに非常に便利です。
よく使われる機能
- カートに追加された商品の情報をカスタマイズする。
- 商品の合計金額を変更する。
- 特定の条件に基づいて商品を除外する。
- クーポンの適用状況を確認する。
- 商品にカスタムデータを追加する。
- 表示される商品情報を多言語対応にする。
構文
add_filter( 'woocommerce_get_cart_contents', 'your_custom_function' );
パラメータ
$cart_contents
(array): カート内の商品情報の配列。
戻り値
- (array): 変更されたカート内容の配列。
WooCommerceのバージョン
- このフィルタは、WooCommerce 2.0以降で使用可能です。
WordPressのバージョン
- WordPress 3.5以降で使用可能です。
この関数のアクションでの使用可能性
アクション | 使用例 |
---|---|
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_get_cart_contents', 'add_tax_to_cart_items' );
function add_tax_to_cart_items( $cart_contents ) {
foreach ( $cart_contents as &$item ) {
$item['data']->set_price( $item['data']->get_price() * 1.1 ); // 10%の税金
}
return $cart_contents;
}
引用元: https://woocommerce.com/
サンプル2: 特定の商品をカートから削除
このサンプルでは、特定のIDの商品をカートから削除します。
add_filter( 'woocommerce_get_cart_contents', 'remove_specific_product' );
function remove_specific_product( $cart_contents ) {
foreach ( $cart_contents as $key => $item ) {
if ( $item['product_id'] === 123 ) { // 商品ID123をチェック
unset( $cart_contents[$key] ); // 削除
}
}
return $cart_contents;
}
引用元: https://developer.woocommerce.com/
サンプル3: カスタムデータの追加
このコードでは、カート内の商品にカスタムデータを追加しています。
add_filter( 'woocommerce_get_cart_contents', 'add_custom_data_to_cart' );
function add_custom_data_to_cart( $cart_contents ) {
foreach ( $cart_contents as &$item ) {
$item['custom_data'] = 'カスタムデータ'; // カスタムデータを追加
}
return $cart_contents;
}
引用元: https://www.wpbeginner.com/
サンプル4: 商品名の変更
このコードでは、カート内の商品名を変更しています。
add_filter( 'woocommerce_get_cart_contents', 'change_product_name_in_cart' );
function change_product_name_in_cart( $cart_contents ) {
foreach ( $cart_contents as &$item ) {
if ( $item['product_id'] === 456 ) { // 商品ID456をチェック
$item['data']->set_name( '新しい商品名' ); // 商品名を変更
}
}
return $cart_contents;
}
引用元: https://www.smashingmagazine.com/
サンプル5: カートの合計金額を調整
このサンプルでは、カートの合計金額を特定の条件に基づいて調整します。
add_filter( 'woocommerce_get_cart_contents', 'adjust_cart_total' );
function adjust_cart_total( $cart_contents ) {
$total_discount = 0;
foreach ( $cart_contents as $item ) {
$total_discount += $item['data']->get_price() * 0.05; // 5%の割引
}
if ( $total_discount > 0 ) {
WC()->cart->set_discount( $total_discount ); // 割引を適用
}
return $cart_contents;
}
引用元: https://www.advancedcustomfields.com/