WooCommerceでダウンロード商品のみの販売の時にメールアドレスのみで購入できるようにする方法
商品をバーチャル商品にします。
WooCommerceの商品ページに出てくる、下記の部分で、
バーチャルにチェックが入っていることを確かめてください。
以下を子テーマのfunctions.phpに追記してください。
通常は、
外観→テーマファイルエディタ
に移動して、functions.phpというファイルを選択すればよいです。
FTPで直接編集でもOKです。
//ダウンロード商品の販売の時にメールアドレスのみで購入できるようにする
add_filter( 'woocommerce_checkout_fields', 'custom_override_checkout_fields_for_virtual_products' );
function custom_override_checkout_fields_for_virtual_products( $fields ) {
// カート内の商品が全てバーチャルかどうかをチェック
$all_virtual = true;
foreach ( WC()->cart->get_cart() as $cart_item_key => $cart_item ) {
if ( ! $cart_item['data']->is_virtual() ) {
$all_virtual = false;
break;
}
}
// カート内の商品が全てバーチャルの場合、特定のフィールドを非必須にし、隠す
if ( $all_virtual ) {
$fields_to_modify = array(
'billing_first_name',
'billing_last_name',
'billing_company',
'billing_address_1',
'billing_address_2',
'billing_city',
'billing_postcode',
'billing_country',
'billing_state',
'billing_email',
'billing_phone'
);
foreach ( $fields_to_modify as $field ) {
if ( isset( $fields['billing'][$field] ) ) {
$fields['billing'][$field]['required'] = false;
$fields['billing'][$field]['class'][] = 'hide';
}
}
// CSSを追加して非表示フィールドを隠す
add_action( 'wp_footer', 'custom_hide_checkout_fields_css' );
}
return $fields;
}
function custom_hide_checkout_fields_css() {
?>
<style>
.woocommerce-billing-fields .hide,
.woocommerce-additional-fields .hide {
display: none !important;
}
</style>
<?php
}
これでメールアドレス以外の項目が非表示になりました。
必要に応じて billing_xxxのところを削除してもらえれば、表示したい項目を残すことができます。
CSSで!importantでdisplay消してるのですが、!importantがないと何故か消えません。調べるの面倒なので調べてませんが、お気に召さない方は調べてみてください。
この記事が気に入ったらサポートをしてみませんか?