でストアを構築する場合 WordPressサイト、WooCommerceは強力な基盤を提供しますが、真の制御はスマートスニペットによって実現されます。小さなカスタムコードで、ショップページ、チェックアウトページ、さらには商品の動作の細部まで、重いプラグインを使わずに形作ることができます。スニペットは、phpファイルに記述したり、 子テーマたり、コードスニペットプラグインをインストールして、より安全で視覚的なワークフローを実現したりできます。多くの開発者は、テーマファイルに触れることなくルールの有効化、無効化、エクスポートが可能なCode SnippetsまたはCode Snippets Proを好んで使用しています。これにより、ソースコードが整理され、新しいプロジェクトへの自動インポートが容易になります。
スニペットは、ショップページのタイトル変更、WooCommerceの パンくず、チェックアウトフィールドの調整といった一般的な作業に役立ちます。 カスタムフィールド 、カートボタンのテキストを変更したり、最低注文金額を設定したりできます。WooCommerce設定の微調整、 WooCommerceサポート 、wc商品ギャラリーズーム、wc商品ギャラリーライトボックス、wc商品ギャラリースライダーの有効化もわずか数分で完了します。
また、カスタム通貨を追加したり、商品タブの名前を「詳細情報」に変更したり、ウィジェットから商品カテゴリーを非表示にしたりすることも可能です。シンプルな関数を貼り付ける場合でも、カスタムコードのライブラリを増やし続ける場合でも、これらの実用的なスニペットは、無駄を省いたクリーンな機能を提供し、十分にテストされていればほとんどのビルドで問題なく動作します。.
WooCommerceコードスニペットを安全に使用する方法

にカスタムスニペットを追加すると、 WooCommerce WordPressサイトの動作が一変する可能性があります。しかし、functions.phpファイルに間違ったコード行を貼り付けたり、PHP関数に誤りがあったりすると、サイト全体が壊れてしまう可能性があります。そのため、カスタムコードを使用する際は、安全な方法に従うことが重要です。
子テーマまたはスニペットプラグインを使用する
- 子テーマの functions.php ファイル内にカスタム コードを配置して、テーマの更新後もコードがそのまま残るようにします。.
- テーマファイルを直接編集したくない場合は、Code Snippets プラグインまたは Code Snippets Pro をインストールしてください。.
- これらのツールを使用すると、テーマ ファイルに触れることなくスニペットを作成、管理、エクスポートできます。.
- プラグインには自動インポートのオプションも含まれており、さまざまな Web サイトでカスタム スニペットを簡単に再利用できるようになります。.
公開前にテストする
- ライブサイトにコードを直接貼り付けないでください。.
- スニペットは常に ステージング環境。
- この手順により、WooCommerce 設定、チェックアウト フィールド、またはその他のテーマ ファイルとの競合がなくなることが保証されます。.
カスタムコードをドキュメント化する
- を追加します 明確なコメント 各関数の上に、その関数の機能を説明する
- 例: チェックアウト ページ、ショップ ページ、WooCommerce 製品カテゴリ、またはアカウント チェックアウト フィールドに影響するかどうか。.
- 適切なラベルを付けると、後でソースコードを理解しやすくなります。.
バックアップとバージョン管理を維持する
- スニペットを WordPress の外部に保存します Git または別のバージョン管理ツールを使用して、 。
- コード スニペット プラグインを使用する場合は、エクスポート機能を活用してください。.
- バックアップがあれば、アップデート後に何かが正常に動作しなくなった場合にすぐにロールバックできます。.
スニペットは適切に扱えば強力なツールキットになります。 WooCommerceをカスタマイズするのに 不要なプラグインでWordPressサイトを肥大化させることなく、クリーンで安定した状態を保ちながら
WooCommerce のカスタマイズについて専門家のサポートが必要ですか?
Seahawk の WooCommerce 開発チームは、カスタム機能を構築し、チェックアウトフローを管理し、お客様のビジネスに合わせた安定したコード ソリューションを作成します。.
テーマとUX設定の基本:WooCommerceコードスニペット
高度なスニペットに取り組む前に、WooCommerceのサポートを設定し、テーマを整理しておくと、よりスムーズなショッピング体験が得られます。多くの開発者はこれらの基本を見落としがちですが、これらの作業によってストアの見た目とユーザーエクスペリエンスが劇的に向上します。.
テーマでWooCommerceサポートを宣言する
内で行う 、子テーマのfunctions.phpファイル か、 カスタムスニペットプラグインを。
関数 mytheme_add_woocommerce_support() { add_theme_support( 'woocommerce' ); add_theme_support( 'wc-product-gallery-zoom' ); add_theme_support( 'wc-product-gallery-lightbox' ); add_theme_support( 'wc-product-gallery-slider' ); } add_action( 'after_setup_theme', 'mytheme_add_woocommerce_support' );
このスニペットは、WooCommerceのコアサポートに加えて、 wc product gallery zoom、 wc product gallery lightbox、 wc product gallery slider を。これらの機能を組み合わせることで、単一商品ページでの商品閲覧が向上します。
WooCommerceのパンくずリストを削除する
パンくずはナビゲーションに便利ですが、デザインが乱雑になることもあります。テーマに既にパンくずが含まれている場合、またはよりすっきりとしたヘッダーをご希望の場合は、以下のスニペットを使用してWooCommerceのパンくずを削除できます。
add_action( 'init', 'remove_wc_breadcrumbs' ); 関数 remove_wc_breadcrumbs() { remove_action( 'woocommerce_before_main_content', 'woocommerce_breadcrumb', 20, 0 ); }
を頼りにしているストアもあるため、注意して使用してください SEO効果を高めるためにパンくずリスト 。パンくずリストを別のナビゲーションスタイルに置き換える場合は、パンくずリストを削除することでデザインをシンプルにすることができます。
ショップページのタイトルを置き換える
ショップページのデフォルトのタイトルは、多くの場合「ショップ」だけです。ブランドや季節ごとのキャンペーンに合わせて、カスタムテキストに置き換えることができます。.
add_filter( 'woocommerce_page_title', 'shop_page_title' ); function shop_page_title( $title ) { if ( is_shop() ) { return "Our Collections"; } return $title; }
変更できます ショップページのタイトルは、 。例えば、ホリデーセール期間中は、「ホリデースペシャル」のように変更することで、顧客のエンゲージメントを高めることができます。
発見性を向上させるカタログの調整
基本設定が完了したら、次のステップはWooCommerceカタログを微調整することです。これらのスニペットは、WordPressサイト上での商品やカテゴリーの表示方法を制御できるため、顧客が混乱することなく、欲しい商品を見つけやすくなります。.
デフォルトのカタログの並べ替えを変更する
WooCommerce はデフォルトで商品をアルファベット順またはメニュー順に並べ替えます。この表示方法を変更して、最新の商品を最初に表示したり、価格順に並べ替えたりできます。このちょっとした変更で、新着商品やお得なセール商品を目立たせることができます。.
add_filter( 'woocommerce_default_catalog_orderby', 'custom_default_catalog_orderby' ); function custom_default_catalog_orderby() { return 'date'; // オプション: 'date', 'price', 'title' }
これにより、買い物客はショップページの上部に最新の商品を確実に表示できるようになります。.
ページあたりの商品数を調整する
1ページあたりの商品数が多すぎると、買い物客は圧倒されてしまいます。逆に少なすぎると、クリックを繰り返す回数が増え、イライラしてしまいます。商品数を調整する方法は次のとおりです。
add_filter( 'loop_shop_per_page', 'new_loop_shop_per_page', 20 ); function new_loop_shop_per_page( $cols ) { $cols = 12; // 必要に応じてこの数値を調整します return $cols; }
この値を調整すると、 サイトの速度 とユーザー エクスペリエンスのバランスが取れます。
アーカイブからカテゴリまたは商品を非表示にする
ショップページに特定の商品カテゴリーを表示したくない場合があります。季節商品、卸売専用商品、テストカテゴリーなどは、クイックスニペットで除外できます。.
add_action( 'pre_get_posts', 'remove_categories_shop' ); function remove_categories_shop( $q ) { if ( ! $q->is_main_query() || ! $q->is_post_type_archive() ) return; if ( ! is_admin() && is_shop() ) { $q->set( 'tax_query', array(array( 'taxonomy' => 'product_cat', 'field' => 'slug', 'terms' => array( 'wholesale', 'seasonal' ), 'operator' => 'NOT IN' ))); } }
これにより、顧客に見てもらいたい製品のみが表示されるため、カタログを整理した状態に保つことができます。.
商品カテゴリーウィジェットからカテゴリーを除外する
を使用している場合 WooCommerceの商品カテゴリー 、すべての商品 を表示したく。その場合は、次のようにカテゴリーを除外できます。
add_filter( 'woocommerce_product_categories_widget_args', 'woo_product_cat_widget_args' ); function woo_product_cat_widget_args( $cat_args ) { $cat_args['exclude'] = array( 25 ); // 25をカテゴリーIDに置き換えます return $cat_args; }
このスニペットを使用すると、商品の発見をより細かく制御でき、最も収益性の高いカテゴリに顧客の注意を向けることができます。.
コンバージョン率を高める商品ページの強化:WooCommerceコードスニペット
単一商品ページは、買い物客が購入するかどうかを決める場所です。WooCommerceスニペットをいくつか使用することで、レイアウトを簡素化し、混乱を減らし、最も重要な詳細を強調することができます。.
製品タブの名前変更または削除
WooCommerceの商品タブ「説明」や「追加情報」などは、必ずしもストアの雰囲気に合っているとは限りません。これらのタブの名前を変更するか、不要なタブを完全に削除しましょう。.
add_filter( 'woocommerce_product_tabs', 'woo_rename_tab', 98 ); function woo_rename_tab( $tabs ) { $tabs['description']['title'] = '詳細情報'; return $tabs; }
を削除することもできます 「追加情報」 冗長だと感じる場合は、
add_filter( 'woocommerce_product_tabs', 'remove_product_tabs', 98 ); function remove_product_tabs( $tabs ) { unset( $tabs['additional_information'] ); return $tabs; }
「在庫切れ」をより分かりやすいテキストに置き換える
デフォルトの「在庫切れ」ラベルは顧客を遠ざけてしまう可能性があります。「販売済み」や「近日発売」といった、よりソフトなアプローチで顧客の関心を維持しましょう。.
add_filter( 'woocommerce_get_availability', 'availability_filter_func' ); function availability_filter_func( $availability ) { $availability['availability'] = str_ireplace( '在庫切れ', '売り切れ', $availability['availability'] ); return $availability; }
この小さな変更により、追加のプラグインなしで顧客エクスペリエンスを向上させることができます。.
「カートに追加」ではなく「すでにカートに入っている」と表示する
既に商品をカートに追加している場合、同じ「 カートに追加」 ボタンが表示されると混乱を招く可能性があります。このコードスニペットは、そのボタンを「既にカートに入っています」というメッセージに置き換えます。
add_filter( 'woocommerce_product_single_add_to_cart_text', 'woo_custom_cart_button_text' ); function woo_custom_cart_button_text() { global $woocommerce; foreach( $woocommerce->cart->get_cart() as $cart_item ) { if( get_the_ID() == $cart_item['product_id'] ) { return __( 'すでにカートに入っています', 'woocommerce' ); } } return __( 'カートに追加', 'woocommerce' ); }
これにより明確なフィードバックが提供され、ショッピングのプロセスがスムーズになります。.
変動製品価格設定を簡素化
WooCommerce では通常、変動価格商品に対して 100~200 ドルのような価格帯が表示されます。「From」ラベル付きの最低価格のみを表示したい場合は、次のスニペットを使用してください。
add_filter( 'woocommerce_variable_price_html', 'variation_price_format_min', 9999, 2 ); 関数 variation_price_format_min( $price, $product ) { $prices = $product->get_variation_prices( true ); $min_price = current( $prices['price'] ); return sprintf( __( 'From %1$s', 'woocommerce' ), wc_price( $min_price ) ); }
これにより、期待がより明確になり、より多くのクリックを促進できます。.
カートとチェックアウトの摩擦を軽減する洗練された機能:WooCommerce コードスニペット
カートとチェックアウトの小さな改善は、コンバージョン率を急速に向上させます。これらのスニペットは、手順を合理化し、フォームを整理し、買い物客の集中力を維持します。.
カートに追加後、チェックアウトにリダイレクトする
スピードが重要な単一商品ファネルやフラッシュセールにご利用ください。子テーマのfunctions.phpファイルまたはスニペットプラグインに追加してください。.
add_filter( 'woocommerce_add_to_cart_redirect', 'seahawk_redirect_to_checkout' ); 関数 seahawk_redirect_to_checkout( $url ) { return wc_get_checkout_url(); }
チェックアウト時にメールを優先する
リカバリフローとサポートのために、早めにメールアドレスを収集してください。数値が低いほど優先度が高くなります。.
add_filter( 'woocommerce_checkout_fields', 'seahawk_email_first' ); function seahawk_email_first( $fields ) { if ( isset( $fields['billing']['billing_email'] ) ) { $fields['billing']['billing_email']['priority'] = 4; } return $fields; }
携帯電話をオプションにするか、市場によって必須にするか
各地域のコンプライアンスとサポートのニーズに合わせます。.
add_filter( 'woocommerce_billing_fields', 'seahawk_phone_requirement' ); function seahawk_phone_requirement( $address_fields ) { // マーケットで電話番号の入力が必須の場合は true に設定 $address_fields['billing_phone']['required'] = false; return $address_fields; }
チェックアウトフィールドの並べ替えまたは整理
フォームは短く論理的にしてください。例⟶ 名と姓を上に移動します。.
add_filter( 'woocommerce_checkout_fields', 'seahawk_reorder_fields' ); function seahawk_reorder_fields( $fields ) { if ( isset( $fields['billing']['billing_first_name'] ) ) { $fields['billing']['billing_first_name']['priority'] = 6; } if ( isset( $fields['billing']['billing_last_name'] ) ) { $fields['billing']['billing_last_name']['priority'] = 8; } return $fields; }
利用規約の上にカスタムチェックボックスを追加する
同意や追加の確認に使用します。検証も含まれます。.
add_action( 'woocommerce_checkout_before_terms_and_conditions', 'seahawk_checkout_checkboxes' ); 関数 seahawk_checkout_checkboxes() { ?><p class="form-row custom-checkboxes"> <label class="woocommerce-form__label checkbox"><input type="checkbox" class="woocommerce-form__input input-checkbox" name="seahawk_consent_one"><span>注文の更新情報をメールで受け取ることに同意します</span><span class="required">*</span></label> <label class="woocommerce-form__label checkbox"><input type="checkbox" class="woocommerce-form__input input-checkbox" name="seahawk_consent_two"><span>配送先住所が正しいことを確認します</span><span class="required">*</span></label></p>
指値注文ノートの文字
フルフィルメントチームが読めるようにメモを残します。.
add_filter( 'woocommerce_checkout_fields', 'seahawk_limit_order_notes' ); function seahawk_limit_order_notes( $fields ) { if ( isset( $fields['order']['order_comments'] ) ) { $fields['order']['order_comments']['maxlength'] = 180; $fields['order']['order_comments']['placeholder'] = __( '短い納品書を追加します。最大180文字です。' ); } return $fields; }
国別の配送通知を表示する
特定の国が選択されたときに動的なメッセージを表示します。.
add_action( 'woocommerce_before_checkout_billing_form', 'seahawk_country_notice_container' ); 関数 seahawk_country_notice_container() { echo '<div class="shipping-notice woocommerce-info" style="display:none">処理後、配送まで5〜10営業日かかります。</div> '; } add_action( 'woocommerce_after_checkout_form', 'seahawk_country_notice_script' ); 関数 seahawk_country_notice_script() { ?><script> document.addEventListener('DOMContentLoaded', function() { var selectEl = document.querySelector('select#billing_country'); var noticeEl = document.querySelector('.shipping-notice'); var targetCountry = 'FR'; if (!selectEl || !noticeEl) return; function toggleNotice() { if (selectEl.value === targetCountry) { noticeEl.style.display = 'block'; } else { noticeEl.style.display = 'none'; } } toggleNotice(); selectEl.addEventListener('change', toggleNotice); }); </script>
チェックアウト時のオートフォーカスフィールドを変更する
入力を速くするには、まず電子メール フィールドにフォーカスします。.
add_filter( 'woocommerce_checkout_fields', 'seahawk_change_autofocus' ); function seahawk_change_autofocus( $fields ) { if ( isset( $fields['billing']['billing_first_name'] ) ) { $fields['billing']['billing_first_name']['autofocus'] = false; } if ( isset( $fields['billing']['billing_email'] ) ) { $fields['billing']['billing_email']['autofocus'] = true; } return $fields; }
注文ボタンの近くに役立つテキストを追加する
プライバシーに関するメモや配達リマインダーに使用します。.
add_action( 'woocommerce_review_order_after_submit', 'seahawk_message_below_checkout_button' ); function seahawk_message_below_checkout_button() { echo '<p><small>この注文を行うことにより、提供された情報が正確であることを確認します。</small></p> '; }
エッジケースをリダイレクトして早期に検証する
支払い前にシグナルをクリーンな状態に保ってください。例⟶ アカウント作成フィールドを必須にする。.
add_filter( 'woocommerce_checkout_fields', 'seahawk_require_account_fields' ); function seahawk_require_account_fields( $fields ) { if ( isset( $fields['account']['account_username'] ) ) { $fields['account']['account_username']['required'] = true; } if ( isset( $fields['account']['account_password'] ) ) { $fields['account']['account_password']['required'] = true; } if ( isset( $fields['account']['account_password-2'] ) ) { $fields['account']['account_password-2']['required'] = true; } return $fields; }
スマートな配送ロジック:WooCommerceコードスニペット
スマートな配送ルールにより、選択肢の多さが軽減され、コストが予測可能になります。これらのスニペットは、ローカルピックアップなどの便利なオプションを隠すことなく、シンプルな意思決定を可能にします。.
送料無料が利用可能な場合は有料配送方法を非表示にする
送料無料が適用される場合のみ、送料無料を表示します。送料無料が利用できない場合は、送料を表示したままにしてください。.
add_filter( 'woocommerce_package_rates', 'seahawk_only_free_shipping_when_available', 10, 2 ); function seahawk_only_free_shipping_when_available( $rates, $package ) { $new_rates = array(); foreach ( $rates as $rate_id => $rate ) { if ( 'free_shipping' === $rate->method_id ) { $new_rates[ $rate_id ] = $rate; break; } } if ( ! empty( $new_rates ) ) { // ローカルピックアップが存在する場合は保持します foreach ( $rates as $rate_id => $rate ) { if ( 'local_pickup' === $rate->method_id ) { $new_rates[ $rate_id ] = $rate; break; } } return $new_rates; } $rates を返します。 }
なぜこれが役立つのか
- 送料無料の対象となる場合、意思決定の疲労を軽減します。.
- を維持します 現地での受け取り 。
- 価格に敏感な注文におけるカートの放棄を削減します。.
シンプルな送料無料のしきい値メッセージを追加する
小計ルールを使用する場合は、買い物客が合計金額にどれくらい近いかわかるように、わかりやすい通知を表示します。.
add_action( 'woocommerce_before_cart', 'seahawk_free_shipping_threshold_notice' ); add_action( 'woocommerce_before_checkout_form', 'seahawk_free_shipping_threshold_notice' ); function seahawk_free_shipping_threshold_notice() { $threshold = 75; // 送料無料のしきい値を設定します $subtotal = WC()->cart ? WC()->cart->get_displayed_subtotal() : 0; if ( $subtotal && $subtotal < $threshold ) { $remaining = wc_price( $threshold - $subtotal ); wc_print_notice( '送料無料を取得するには、さらに ' . $remaining . ' を追加します。', 'notice' ); } }
ヒント
- このしきい値を WooCommerce 設定と一致させることで、メッセージの正確性が維持されます。.
- クーポンと税金を使ってテストし、計算がポリシーを反映していることを確認します。.
価格と通貨の管理: WooCommerce コードスニペット
整然とした価格設定は信頼を築きます。これらのスニペットは、地域通貨のサポートを追加し、ストア全体の価格表示を整理します。.
カスタム通貨と記号を追加する
地域ブランドやテストストアに便利です。子テーマのfunctions.phpファイルまたはスニペットプラグインに追加してください。.
// カスタム通貨コードを登録します。 add_filter( 'woocommerce_currencies', 'seahawk_add_currency' ); function seahawk_add_currency( $currencies ) { $currencies['ABC'] = __( 'Sample Currency', 'woocommerce' ); // ABC と名前を置き換えます。 return $currencies; } // カスタム通貨に記号を添付します。 add_filter( 'woocommerce_currency_symbol', 'seahawk_add_currency_symbol', 10, 2 ); function seahawk_add_currency_symbol( $symbol, $currency ) { if ( 'ABC' === $currency ) { $symbol = '¤'; // 記号に置き換えます。 } return $symbol; }
どこで使うか
- WooCommerce 設定 ⟶ 一般 ⟶ 通貨オプション。.
- コードを追加した後、新しい通貨を選択します。.
無駄な価格ゼロを削減
より明確な価格表示により、読みやすさが向上します。.
フィルターを追加します( 'woocommerce_price_trim_zeros', '__return_true' );
何をするのか
- 19.00 ではなく 19 が表示されます。.
- 必要な場合にのみ小数点以下を保持します。.
オプション ⟶ ロケールごとに価格形式を制御する
特定の市場に合わせて千単位と小数点の区切りを切り替えます。.
add_filter( 'wc_price_args', 'seahawk_price_args_by_locale' ); function seahawk_price_args_by_locale( $args ) { // EU スタイルの例 if ( is_user_logged_in() && function_exists( 'get_user_locale' ) && 'fr_FR' === get_user_locale() ) { $args['decimal_separator'] = ','; $args['thousand_separator'] = ' '; } return $args; }
支払い、メール、注文処理:WooCommerce コードスニペット
信頼性の高いスニペットをいくつか追加することで、コミュニケーションと管理を強化します。これにより、チームは重要な更新情報を確認したり、メールに注文データを追加したり、メンテナンス中にチェックアウトを一時停止したり、リスクの高い注文をブロックしたりできるようになります。.
完了した注文のメール受信者を追加する
注文が完了したら、サポートまたは経理に連絡します。.
add_filter( 'woocommerce_email_recipient_customer_completed_order', 'seahawk_extra_completed_order_recipient', 10, 2 ); function seahawk_extra_completed_order_recipient( $recipient, $order ) { $extra = 'ops@example.com'; // 自分のアドレスに置き換えます if ( $recipient && strpos( $recipient, $extra ) === false ) { $recipient .= ', ' . $extra; } return $recipient; }
ヒント
- ブラインド コピーの場合は、woocommerce_email_headers に接続し、BCC ヘッダーを追加します。.
トランザクションメールにカスタム注文メタ情報を追加する
顧客のメールに追跡コードまたは保存されたカスタム フィールドを表示します。.
// 1) デモ用にカスタム注文メタフィールドを保存します。 add_action( 'woocommerce_checkout_update_order_meta', 'seahawk_save_tracking_meta' ); function seahawk_save_tracking_meta( $order_id ) { // 実際の追跡値を保存する独自のロジックに置き換えます。 if ( ! metadata_exists( 'post', $order_id, '_tracking_code' ) ) { update_post_meta( $order_id, '_tracking_code', 'ABC123' ); } } // 2) そのメタをメールに挿入します。 add_filter( 'woocommerce_email_order_meta_fields', 'seahawk_add_tracking_to_emails', 10, 3 ); function seahawk_add_tracking_to_emails( $fields, $sent_to_admin, $order ) { $tracking = $order->get_meta( '_tracking_code' ); if ( $tracking ) { $fields['tracking_code'] = array( 'label' => __( 'トラッキングコード', 'woocommerce' ), 'value' => esc_html( $tracking ), ); } return $fields; }
表示される場所
- 顧客処理注文
- 顧客が注文を完了
- 管理者新規注文
ユーザーが保留中の注文を持っている場合はチェックアウトを拒否する
不正行為の防止や特別なワークフローに役立ちます。一致する顧客のメールアドレスに保留中の注文がある場合、チェックアウトをブロックします。.
add_action( 'woocommerce_after_checkout_validation', 'seahawk_block_when_pending_orders', 10, 2 ); function seahawk_block_when_pending_orders( $data, $errors ) { if ( is_user_logged_in() ) { $customer_id = get_current_user_id(); $args = array( 'type' => 'shop_order', 'status' => array( 'wc-pending' ), 'limit' => 1, 'customer_id' => $customer_id, 'return' => 'ids', ); $pending = wc_get_orders( $args ); if ( ! empty( $pending ) ) { $errors->add( 'seahawk_pending_block', __( '保留中の注文があります。新しい注文を行う前に、支払いを完了するか、キャンセルしてください。' ) ); } return; } // ゲストチェックアウト ⟶ 請求先メールアドレスで一致 $email = isset( $data['billing_email'] ) ? sanitize_email( $data['billing_email'] ) : ''; if ( $email ) { $args = array( 'type' => 'shop_order', 'status' => array( 'wc-pending' ), 'limit' => 1, 'billing_email' => $email, 'return' => 'ids', ); $pending = wc_get_orders( $args ); if ( ! empty( $pending ) ) { $errors->add( 'seahawk_pending_block_guest', __( '保留中の注文があります。新しい注文を行う前に、支払いを完了するか、キャンセルしてください。' ) ); } } }
注記
- サポート ワークフローに合わせてメッセージを調整します。.
- 必要に応じて、代金引換または銀行振込によるチェックアウトを許可することを検討してください。.
休日または一時停止モードを有効にする
カートとチェックアウトを無効にしながらもカタログを表示できます。メンテナンスや在庫監査に最適です。.
add_action( 'init', 'seahawk_holiday_mode' ); function seahawk_holiday_mode() { if ( ! apply_filters( 'seahawk_holiday_mode_enabled', false ) ) { return; } remove_action( 'woocommerce_after_shop_loop_item', 'woocommerce_template_loop_add_to_cart', 10 ); remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 30 ); remove_action( 'woocommerce_proceed_to_checkout', 'woocommerce_button_proceed_to_checkout', 20 ); remove_action( 'woocommerce_checkout_order_review', 'woocommerce_checkout_payment', 20 ); add_action( 'woocommerce_before_main_content', 'seahawk_shop_disabled_notice', 5 ); add_action( 'woocommerce_before_cart', 'seahawk_shop_disabled_notice', 5 ); add_action( 'woocommerce_before_checkout_form', 'seahawk_shop_disabled_notice', 5 ); } function seahawk_shop_disabled_notice() { wc_print_notice( __( '当店は現在一時的にご利用いただけません。しばらくしてから再度ご確認ください。' ), 'error' ); }
切り替え方法
- 短いヘルパー スニペットまたはサイト固有のプラグインを使用して、フィルターを true に設定します。
add_filter( 'seahawk_holiday_mode_enabled', '__return_true' );
オプション ⟶ メールの送信者名とアドレスを変更する
に合わせます ブランド アイデンティティ。
add_filter( 'wp_mail_from_name', 'seahawk_wp_mail_from_name', 99 ); function seahawk_wp_mail_from_name( $name ) { $wc_name = get_option( 'woocommerce_email_from_name' ); return $wc_name ? html_entity_decode( $wc_name ): $name; } add_filter( 'wp_mail_from', 'seahawk_wp_mail_from', 99 ); function seahawk_wp_mail_from( $email ) { $wc_email = get_option( 'woocommerce_email_from' ); return $wc_email ? sanitize_email( $wc_email ): $email; }
設定する場所
- WooCommerce ⟶ 設定 ⟶ メール ⟶ 「送信者」の名前とアドレス。.
顧客アカウントとアクセスルール: WooCommerce コードスニペット
アカウントデータは、サポート、注文履歴、 限定コンテンツ。これらのスニペットを使用して、アカウントフィールドを管理し、過去の購入者向けの機能を有効にしましょう。
チェックアウト時にアカウントフィールドを必須にする
顧客にチェックアウト時にアカウントを作成してもらいたい場合は、ユーザー名とパスワードを要求します。.
add_filter( 'woocommerce_checkout_fields', 'seahawk_require_account_on_checkout' ); function seahawk_require_account_on_checkout( $fields ) { if ( isset( $fields['account']['account_username'] ) ) { $fields['account']['account_username']['required'] = true; } if ( isset( $fields['account']['account_password'] ) ) { $fields['account']['account_password']['required'] = true; } if ( isset( $fields['account']['account_password-2'] ) ) { $fields['account']['account_password-2']['required'] = true; } return $fields; }
良い点
- 会員制店舗。.
- サポートと保存されたアドレスを再注文します。.
- 購入後のオンボーディング。.
ユーザーが特定の商品を既に購入したかどうかを確認する
ダウンロードのロックを解除したり、繰り返し購入を制限したり、アップグレード オファーを表示したりするのに役立ちます。.
function seahawk_user_bought_any( $product_ids = array(), $user_id = 0 ) { if ( empty( $product_ids ) ) return false; if ( ! $user_id && is_user_logged_in() ) { $user_id = get_current_user_id(); } if ( ! $user_id ) return false; $orders = wc_get_orders( array( 'type' => 'shop_order', 'status' => array( 'wc-completed', 'wc-processing' ), 'limit' => -1, 'customer_id' => $user_id, 'return' => 'ids', ) ); if ( empty( $orders ) ) return false; foreach ( $orders as $order_id ) { $order = wc_get_order( $order_id ); foreach ( $order->get_items() を $item として) { $pid = $item->get_product_id(); $vid = $item->get_variation_id(); if ( in_array( $pid, $product_ids, true ) || in_array( $vid, $product_ids, true ) ) { true を返します。 } } } false を返します。 }
テンプレートでの使用方法
// 製品テンプレートまたはショートコードの例 $unlock_for = array( 21, 67 ); // アクセスを許可する製品ID if ( seahawk_user_bought_any( $unlock_for ) ) { echo '<p>ご購入ありがとうございます。ボーナスコンテンツが解除されました。</p> '; } そうでなければ { echo '<p>コースを購入すると、ボーナスレッスンが利用できるようになります。</p> '; }
アイデア
- 過去の購入者にのみカスタム タブを表示します。.
- 「カートに追加」をダウンロード リンクに置き換えます。.
- 以前の所有者に割引アップグレードを提供します。.
検索とフィルターの分野: WooCommerce コードスニペット
検索結果とテンプレートに表示される内容を管理します。検索結果を整理することで、ユーザーはより早く目的の商品を見つけられるようになり、非公開カテゴリーも非表示になります。.
サイト内検索からカテゴリを非表示にする
レンタル、卸売、ドラフトのカテゴリを検索結果に表示しないようにします。.
add_action( 'pre_get_posts', 'seahawk_hide_category_from_search' ); function seahawk_hide_category_from_search( $query ) { if ( is_admin() || ! $query->is_main_query() || ! $query->is_search() ) { return; } $tax_query = array( array( 'taxonomy' => 'product_cat', 'field' => 'slug', 'terms' => array( 'rentals' ), // カテゴリースラッグに置き換えてください 'operator' => 'NOT IN', ), ); $query->set( 'post_type', array( 'product' ) ); $query->set( 'tax_query', $tax_query ); }
ユースケース
- 卸売専用の商品を非表示にします。.
- 発売まで季節限定ドラフトを除外します。.
- B2B バンドルを小売検索から除外します。.
テンプレートのカテゴリまたはタグのクイックチェック
カテゴリまたはタグに基づいて、ブロック、バッジ、またはメッセージを条件付きで読み込みます。.
// 商品ループまたは単一テンプレートの場合 if ( has_term( 'sneakers', 'product_cat', get_the_ID() ) ) { echo ' <span class="badge">Limited Edition</span> '; } if ( has_term( array( 'gift', 'bundle' ), 'product_tag', get_the_ID() ) ) { echo '<p> 24時間以内に発送</p>'; }
アイデア
- タグ付けされたアイテムに「ギフト対応」バッジを表示します。.
- サイズ表はアパレルのカテゴリにのみ追加します。.
- 化粧品に安全に関する注意事項を表示します。.
商品カテゴリーウィジェットからカテゴリーを除外する
サイドバーでは、ユーザーに閲覧してほしい内容に焦点を絞ります。.
add_filter( 'woocommerce_product_categories_widget_args', 'seahawk_widget_exclude_cats' ); function seahawk_widget_exclude_cats( $args ) { $args['exclude'] = array( 16, 25 ); // カテゴリIDに置き換える return $args; }
ヒント
- 「製品」⟶「カテゴリ」の下で ID を見つけ、名前の上にマウスを移動すると URL 内の ID が表示されます。.
管理者の快適性向上:WooCommerce コードスニペット
WooCommerceストアを運営するということは、 WordPress管理画面。これらのスニペットは、重要な詳細を可視化し、送信メールをブランドに合わせて調整することで、日々の作業を楽にします。
注文リストにカスタム列を追加する
シリアル番号や追跡コードなどの追加データを注文リストビューに直接表示します。.
// 新しい列を追加します。add_filter( 'manage_edit-shop_order_columns', 'seahawk_edit_shop_order_columns' ); function seahawk_edit_shop_order_columns( $columns ) { $columns['serial'] = __( 'Serial Number', 'woocommerce' ); return $columns; } // 列にデータを入力します。add_action( 'manage_shop_order_posts_custom_column', 'seahawk_shop_order_column_content', 10, 2 ); function seahawk_shop_order_column_content( $column, $post_id ) { if ( 'serial' === $column ) { $serial = get_post_meta( $post_id, '_order_serial_number', true ); if ( $serial ) { echo esc_html( $serial ); } else { echo '—'; } } }
なぜ役立つのか
- データを事前に表示することでクリック数を節約します。.
- 各注文を開くのにかかる時間を短縮します。.
カスタム投稿タイプにリンクされた製品またはSKUを追加する
カスタム製品セットアップを実行する場合は、列をさらに拡張できます。.
add_filter( 'manage_edit-product_columns', 'seahawk_edit_product_columns' ); function seahawk_edit_product_columns( $columns ) { $columns['sku'] = __( 'SKU', 'woocommerce' ); return $columns; } add_action( 'manage_product_posts_custom_column', 'seahawk_product_column_content', 10, 2 ); function seahawk_product_column_content( $column, $post_id ) { if ( 'sku' === $column ) { $product = wc_get_product( $post_id ); echo $product ? $product->get_sku() : ''; } }
使用事例
- 製品の SKU を一目で確認できます。.
- カタログ管理者の効率を維持します。.
メールの送信者名とアドレスをブランドに合わせて調整する
WordPressのデフォルト設定は、見た目がプロフェッショナルではない場合があります。WooCommerceの設定から値を取得して修正しましょう。.
add_filter( 'wp_mail_from_name', 'seahawk_custom_from_name', 99 ); function seahawk_custom_from_name( $name ) { $wc_name = get_option( 'woocommerce_email_from_name' ); return $wc_name ? html_entity_decode( $wc_name ): $name; } add_filter( 'wp_mail_from', 'seahawk_custom_from_address', 99 ); function seahawk_custom_from_address( $email ) { $wc_email = get_option( 'woocommerce_email_from' ); return $wc_email ? sanitize_email( $wc_email ): $email; }
値を設定する場所
- WooCommerce ⟶ 設定 ⟶ メール ⟶ 送信者名と送信元アドレス。.
パフォーマンスとレイアウトヘルパー:WooCommerceコードスニペット
ページの読み込み速度とレイアウトの見やすさがコンバージョン率を向上させます。これらのスニペットは、カートをモバイル端末上で美しく表示し、おすすめ商品の検索を効率化します。.
カートテーブルをモバイルフレンドリーにする
小さな画面でカートテーブルを縦に並べるには、このCSSを 子テーマの スタイルシートまたはカスタマイザーのCSSパネルに追加します。
/* モバイルフレンドリーな WooCommerce カート表 */ @media screen and (max-width: 700px) { .woocommerce table.shop_table, .woocommerce table.shop_table thead, .woocommerce table.shop_table tbody, .woocommerce table.shop_table th, .woocommerce table.shop_table td, .woocommerce table.shop_table tr { display: block; } .woocommerce table.shop_table thead tr { position: absolute; top: -9999px; left: -9999px; } .woocommerce table.shop_table tr { margin-bottom: 12px; border: 1px solid #e5e7eb; border-radius: 8px; Overflow: Hidden; } .woocommerce table.shop_table td { position: relative; padding-left: 50% !important; border: none; border-bottom: 1px solid #f1f5f9; } .woocommerce table.shop_table td:last-child { border-bottom: none; } .woocommerce table.shop_table td::before { position: absolute; top: 10px; left: 10px; width: 45%; white-space: nowrap; font-weight: 600; content: attr(data-title); } }
仕組み
- WooCommerce がテーブルセルに追加する data-title 属性を使用します。.
- ヘッダーを非表示にして、各行をカードに変換します。.
- プラグインのない携帯電話での読みやすさが向上します。.
注目の製品IDにトランジェントを使用する
おすすめ商品のリストをキャッシュすることで、クエリの繰り返しを削減できます。一度キャッシュしておけば、テンプレート間で再利用できます。.
function seahawk_get_featured_product_ids( $cache_key = 'seahawk_featured_ids', $ttl = HOUR_IN_SECONDS ) { $ids = get_transient( $cache_key ); if ( false !== $ids ) { return $ids; } $featured_query = new WP_Query( array( 'post_type' => 'product', 'posts_per_page' => -1, 'meta_query' => array( array( 'key' => '_featured', 'value' => 'yes', 'compare' => '=', ), ), 'fields' => 'ids', 'no_found_rows' => true, ) ); $ids = $featured_query->posts; set_transient( $cache_key, $ids, $ttl ); return $ids; } // 使用例 ⟶ ミニグリッドを構築する add_shortcode( 'seahawk_featured_grid', function( $atts ) { $ids = seahawk_get_featured_product_ids(); if ( empty( $ids ) ) return '<p>おすすめ商品が見つかりません。</p> '; $out = '<ul class="featured-grid"> '; foreach ( $ids を $pid として) { $out .= '<li> <a href="' . esc_url( get_permalink( $pid ) ) . '">' . esc_html( get_the_title( $pid ) ) . '</a></li> '; } $out .= '</ul> '; $out を返します。 } );
ヒント
- 注目のステータスを切り替えるときにトランジェントをクリアします。.
- キャッシュを削除するには、製品のアップデートにフックします。.
add_action( 'save_post_product', function( $post_id ) { delete_transient( 'seahawk_featured_ids' ); } );
コンプライアンスとローカリゼーションの詳細: WooCommerce コードスニペット
フォームと言語を少し調整するだけで、さまざまな地域でのチェックアウトがより速く、より正確になります。これらのスニペットを使えば、追加のプラグインなしでローカライズできます。.
必要のない州フィールドを削除する
一部の国では州名を記入しません。フィールドを非表示にすることでフォームが短くなり、混乱を軽減できます。.
add_filter( 'woocommerce_default_address_fields', 'seahawk_remove_state_field' ); function seahawk_remove_state_field( $fields ) { if ( isset( $fields['state'] ) ) { $fields['state']['required'] = false; $fields['state']['hidden'] = true; } return $fields; }
ヒント
- 特定の国に対してのみ非表示にしたい場合は、条件付きロジックを使用します。.
リストにカスタム国を追加する
テスト環境や特別な領域に役立ちます。.
add_filter( 'woocommerce_countries', 'seahawk_add_custom_country' ); function seahawk_add_custom_country( $countries ) { $countries['XX'] = __( 'Exampleland', 'woocommerce' ); // コードと名前を置き換えます return $countries; } add_filter( 'woocommerce_continents', 'seahawk_map_custom_country' ); function seahawk_map_custom_country( $continents ) { // 大陸に国コードを追加します if ( isset( $continents['EU']['countries'] ) ) { $continents['EU']['countries'][] = 'XX'; } return $continents; }
出現場所
- WooCommerce 設定 ⟶ 一般 ⟶ 販売場所。.
- チェックアウトページとアカウントページの国ドロップダウン。.
gettextでマイクロコピーを素早く翻訳
テンプレートを編集せずに、ストア全体でタイプミスを修正したり、文言を変更したりできます。.
add_filter( 'gettext', 'seahawk_quick_translate', 10, 3 ); function seahawk_quick_translate( $translated, $original, $domain ) { // 例 ⟶ 「オプションを選択」を「選択」に変更 if ( 'オプションを選択' === $original && 'woocommerce' === $domain ) { return '選択'; } // 例 ⟶ 「カートに追加」を「バッグに追加」に名前変更 if ( 'カートに追加' === $original && 'woocommerce' === $domain ) { return 'バッグに追加'; } return $translated; }
注記
- 元の文字列と完全に一致します。.
- 変更はブランドの声と一貫性を保ちます。.
オプション ⟶ ロケールごとに価格区切り記号をローカライズする
ユーザーが使い慣れた形式で価格を読めるようにします。.
add_filter( 'wc_price_args', 'seahawk_price_format_by_locale' ); function seahawk_price_format_by_locale( $args ) { if ( function_exists( 'get_user_locale' ) && 'fr_FR' === get_user_locale() ) { $args['decimal_separator'] = ','; $args['thousand_separator'] = ' '; } return $args; }
テスト
- カートの合計。.
- クーポンと税金。.
- 注文メール。.
最後に
カタログ表示、チェックアウトフロー、配送ロジック、価格設定、ローカライズ、そして管理者の利便性を網羅したWooCommerceコードスニペットのライブラリが完成しました。これらを組み合わせることで、重いプラグインを使わずにコントロールでき、WordPressサイトをスリムに保つことができます。.
展開する前に、以下のベスト プラクティスに留意してください。
- スニペットをライブサイトに適用する前に、必ずステージングでテストしてください。.
- functions.php ファイルまたはスニペット プラグインのエクスポートのバックアップを保存してください。.
- 将来の開発者が各スニペットの機能を理解できるように、各スニペットにコメントを追加します。.
- WooCommerce の更新を確認してください ⟶ 一部のスニペットは時間の経過とともに調整が必要になる場合があります。.
これらの小さな機能を慎重に扱うことで、プラグインのインストールを何十回も省き、 オンライン ストアを より速く簡単に管理できるようになります。
WooCommerce コードスニペットに関するよくある質問
WooCommerce スニペットを追加する最も安全な方法は何ですか?
最も安全な方法は、子テーマのfunctions.phpファイルまたはコードスニペットプラグインを使用することです。これにより、テーマのアップデート時にコードがそのまま維持され、テーマファイルを直接編集することなく管理できます。.
functions.php またはスニペット プラグインを使用する必要がありますか?
完全な制御が必要な場合は、functions.php が適しています。特にクライアントサイトでの柔軟性を重視する場合は、Code Snippets Pro のようなプラグインを使用すると管理が容易になり、自動インポートとエクスポートも行えます。.
不適切なスニペットによってサイトが壊れる可能性はありますか?
はい。たった1つのPHPエラーでも致命的なエラーを引き起こす可能性があります。スニペットを本番サイトに追加する前に、必ずステージングサイトでテストしてください。.
スニペットは WooCommerce の速度を低下させますか?
いいえ、正しく記述されていれば問題ありません。実際、スニペットはプラグインの代わりになることが多く、サイトの肥大化を抑え、ストアの速度を向上させます。.
スニペットを追加した後、どのようにテストすればよいですか?
ゲストユーザーとログインユーザーの両方でテストしてください。カート、チェックアウトページ、アカウントチェックアウトの各フィールドを確認し、送料、支払い方法、合計金額が正しく機能することを確認してください。.