目次
概要と需要分析
実装の原則:WooCommerce_Product_Queryフックを使用します
実装の手順とコードの例
メモとベストプラクティス
要約します
ホームページ バックエンド開発 PHPチュートリアル WooCommerce Advanced Inventory Management:すべてのバリエーションまたは単純なアイテムが在庫切れになったときにアイテムを自動的に非表示

WooCommerce Advanced Inventory Management:すべてのバリエーションまたは単純なアイテムが在庫切れになったときにアイテムを自動的に非表示

Aug 08, 2025 pm 09:27 PM

WooCommerce Advanced Inventory Management:すべてのバリエーションまたは単純なアイテムが在庫切れになったときにアイテムを自動的に非表示

このチュートリアルでは、カスタムコードを使用してWooCommerceでより細かい在庫管理を実現する方法を詳しく説明しています。 WooCommerceのデフォルトの「Hide Out of Stock」設定とは異なり、カタログが在庫切れの場合にのみ、カタログから変数のすべてのバリアントを隠す方法、およびストアカタログのディスプレイとユーザーエクスペリエンスを最適化する方法を最適化する方法を学びます。

概要と需要分析

WooCommerceは、ストア管理者が「ディレクトリから在庫のないアイテムを隠す」ことを可能にする組み込みのオプションを提供します。ただし、この設定は通常、アイテム自体(単純なアイテムの場合)または単一のバリアント(可変アイテム用)のみです。つまり、変数アイテムに複数のバリアントがある場合、それらのほとんどが在庫切れであっても、1つのバリアントが在庫している限り、アイテムはカタログに表示されますが、ユーザーはインベントリを持つバリアントオプションのみを見ることができます。これにより、製品ページが不完全に見えたり、ユーザーエクスペリエンスが不足している可能性があります。これは、予想されるすべてのサイズまたは色を選択できないためです。

このチュートリアルは、次の特定のニーズに対応するように設計されています。

  1. 可変製品:可変製品のすべてのバリエーション(たとえば、すべてのサイズ、すべての色)が在庫切れである場合にのみ、WooCommerceストアのカタログから完全に隠されています。
  2. シンプルなアイテム:シンプルなアイテムが在庫切れになったら、WooCommerceストアディレクトリからそれらを隠します。

このようにして、カタログを閲覧している間、顧客が真に在庫があり、購入可能な完全なアイテムのみを見ることができるようにすることができます。

実装の原則:WooCommerce_Product_Queryフックを使用します

上記の関数を実装するには、製品リストを照会するときにウコンマースの動作を変更する必要があります。 WooCommerce_Product_Queryは、WooCommerce Querys製品の前にクエリパラメーターを変更できる強力なアクションフックです。このフックを使用して、製品クエリが実行される前に非表示にする必要があるアイテム(つまり、在庫切れの可変アイテム、または在庫切れのシンプルなアイテム)を識別し、クエリの除外リストにIDを追加します。

核となるアイデアは次のとおりです。

  1. すべての変数およびシンプルなアイテムのIDを取得します。
  2. 各変数アイテムについて、そのすべてのバリエーションが在庫切れであることを確認します。これは、データベース内の製品バリエーションのインベントリステータスをクエリすることで達成されます。
  3. 単純なアイテムごとに、在庫がないかどうかを確認します。
  4. 隠された基準を満たすすべての製品IDを収集します。
  5. これらのIDをWooCommerce製品クエリに渡し、結果からそれらを除外します。

実装の手順とコードの例

カスタムプラグインを使用している場合は、現在アクティブなテーマのfunctions.phpファイル、またはプラグインのメインファイルに次のコードを追加します。

  -1、//すべての製品を取得する 'ステータス' => 'publish'、//公開のみの製品 'type' => 'variable'、//変数製品のみを取得します 'return' => 'ids'、//製品idのみを返す
    ));

    //各変数製品foreach($ variable_products_ids as $ variable_id){
        //この変数製品の下に「在庫」バリアントがあるかどうかを確認します//ここのロジックは次のとおりです。
            count(id)を選択します
            {$ wpdb-> posts} p
            内側の結合{$ wpdb-> postmeta} pm
                on p.id = pm.post_id
            p.post_type = 'product_variation' // Product Variant and P.Post_status = 'Publish' // Variantを公開し、P.Post_Parent =%D //は現在の変動製品とPMに属します。株式「ステータス」、$ variabe_id)));

        //クエリの結果をブール値に変換して、判断を促進する$ has_in_stock_variation = $ count> 0? True:false;         

        //バリアントのいずれも在庫がない場合(つまり、すべてのバリアントが在庫切れ)、親製品IDを非表示リストに追加します(!$ has_in_stock_variation){
            $ array_of_product_id [] = $ variabe_id;
        }
    }

    /**
     *商品の簡単な処理*/
    //すべての単純な製品のIDを取得します
    $ simple_products_ids = wc_get_products(array(
        'limit' => -1、//すべての製品を取得 'ステータス' => 'publish'、//公開のみの製品 'type' => 'simple'、// simple products 'return' => 'ids'、//製品idのみを返す
    ));

    //各simple製品foreach($ simple_products_ids as $ simple_id){
        //単純な製品自体が「在庫がある」かどうかを確認します
        $ count = $ wpdb-> get_var($ wpdb-> prepare( "
            count(id)を選択します
            {$ wpdb-> posts} p
            内側の結合{$ wpdb-> postmeta} pm
                on p.id = pm.post_id
            ここでp.post_type = 'product' //製品を見つける(バリアントではない)
                およびp.post_status = 'publish' //製品を公開する必要があり、p.id =%d //

        //クエリの結果をbooleanに変換します$ is_in_stock = $ count> 0? True:false;         

        //単純なアイテムが在庫切れの場合、IDを非表示リストに追加します(!$ is_in_stock){
            $ array_of_product_id [] = $ simple_id;
        }
    }

    //非表示にする必要がある製品IDがある場合は、Queryの除外リストに追加するif(!empty($ array_of_product_id)){
        $ q-> set( 'post__not_in'、$ array_of_product_id);
    }

}
//カスタム関数を「WOOCOMMERCE_PRODUCT_QUERY」アクションフックADD_ACTION( 'WOOCOMMERCE_PRODUCT_QUERY'、 'HIDEX_PRODUCT_IF_ALL_VARIATION_AND_SIMPLE_PRODUCT_IS_OUTOFSTOCK');

メモとベストプラクティス

  1. コード配置:このコードをfunctions.phpファイルに子テーマのfileに配置するか、そのような機能を管理するカスタムプラグインを作成することを強くお勧めします。親テーマのfunctions.phpを変更すると、テーマが更新されたときに変更が直接変更されます。
  2. WooCommerceデフォルト設定:このカスタムロジックが適切に機能するため、WooCommerceの設定を確認する必要がある場合があります。 woocommerce> settings> products> stockでは、ストックからの非表示が選択されていないことを確認するか、このカスタムコードとどのように相互作用するかを理解してください。このコードは、特に可変アイテムのデフォルトの動作をオーバーライドまたはサプリメントします。
  3. パフォーマンスの考慮事項:多数のアイテム(数千または数万)を備えたWooCommerceストアの場合、すべてのアイテムを通過してデータベースを実行するときに、すべての製品クエリをクエリするときに、Webサイトのパフォーマンスに特定の影響を与えることができます。ほとんどの中小規模の店舗では、この影響は無視できることがよくあります。店舗が非常に大きく、パフォーマンスの問題がある場合は、次の最適化の方向を考慮することができます。
    • キャッシュ:クエリの結果をキャッシュして、データベースクエリの重複を減らします。
    • タイミングタスク: WordPressのCronシステムを使用して、ページがロードされるたびにリアルタイムでカウントするのではなく、非表示にする必要がある製品IDのリストを定期的に更新することを検討してください。
  4. テスト:生産環境にカスタムコードを展開する前に、開発環境またはステージング環境で完全にテストして、それが期待どおりに機能し、他の互換性の問題を引き起こさないようにしてください。
  5. 在庫管理:特に可変商品用の在庫追跡のために、WooCommerce Inventory Managementが正しく設定されていることを確認してください。このコードは、正しいインベントリステータス(_STOCK_STATUS METAキー)に依存します。

要約します

上記のカスタムコードを使用すると、WooCommerceカタログのよりスマートな管理を実装できます。これにより、本当に在庫があるアイテム(または少なくとも1つのバリアント)のみが顧客に表示されるようにします。これにより、ユーザーエクスペリエンスが向上するだけでなく、ストアカタログがより整頓されたプロフェッショナルになります。 WordPressとWooCommerceのフックとフィルターを正しく理解して適用することが、ハイエンドのカスタマイズを行うための鍵であることを忘れないでください。

以上がWooCommerce Advanced Inventory Management:すべてのバリエーションまたは単純なアイテムが在庫切れになったときにアイテムを自動的に非表示の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

PHP変数スコープは説明されています PHP変数スコープは説明されています Jul 17, 2025 am 04:16 AM

PHP変数スコープの一般的な問題とソリューションには次のものが含まれます。1。グローバル変数は関数内でアクセスできず、グローバルキーワードまたはパラメーターを使用して渡す必要があります。 2。静的変数は静的で宣言され、1回のみ初期化され、値は複数の呼び出し間で維持されます。 3. $ _GETや$ _POSTなどのハイパーグローバル変数は、任意の範囲で直接使用できますが、安全なフィルタリングに注意を払う必要があります。 4.匿名関数は、使用キーワードを使用して親スコープ変数を導入する必要があり、外部変数を変更する場合は、参照を渡す必要があります。これらのルールを習得すると、エラーを回避し、コードの安定性が向上するのに役立ちます。

PHPでコードをコメントします PHPでコードをコメントします Jul 18, 2025 am 04:57 AM

PHPコメントコードには3つの一般的な方法があります。1。//#を使用して1行のコードをブロックすると、//を使用することをお勧めします。 2。使用/.../複数の行でコードブロックをラップするには、ネストすることはできませんが交差することができます。 3. / if(){}を使用するなどの組み合わせスキルコメントロジックブロックを制御するか、エディターショートカットキーで効率を改善するには、シンボルを閉じることに注意を払い、使用時にネストを避ける必要があります。

PHPコメントを書くためのヒント PHPコメントを書くためのヒント Jul 18, 2025 am 04:51 AM

PHPコメントを書くための鍵は、目的と仕様を明確にすることです。コメントは、「何が行われたのか」ではなく「なぜ」を説明する必要があり、冗長性や単純さを避けてください。 1.読みやすさとツールの互換性を向上させるために、クラスおよびメソッドの説明にdocblock(/*/)などの統合形式を使用します。 2。JSジャンプを手動で出力する必要がある理由など、ロジックの背後にある理由を強調します。 3.複雑なコードの前に概要説明を追加し、手順でプロセスを説明し、全体的なアイデアを理解するのに役立ちます。 4. TodoとFixmeを合理的に使用して、To Doアイテムと問題をマークして、その後の追跡とコラボレーションを促進します。優れた注釈は、通信コストを削減し、コードメンテナンスの効率を向上させることができます。

PHPの学習:初心者向けガイド PHPの学習:初心者向けガイド Jul 18, 2025 am 04:54 AM

tolearnphpefctivially、startbysettingupalocalserverenvironmentusingtoolslikexamppandacodeeditorlikevscode.1)instalxamppforapa Che、mysql、andphp.2)useocodeeditorforsyntaxsupport.3)testyoursetup withasimplephpfile.next、Learnpbasicsincludingvariables、ech

クイックPHPインストールチュートリアル クイックPHPインストールチュートリアル Jul 18, 2025 am 04:52 AM

to installphpquickly、usexampponwindowsorhomebrewonmacos.1.onwindows、downloadandinstallxampp、selectcomponents、startapache、andplacefilesinhtdocs.2

PHPのインデックスごとに文字列内の文字にアクセスする方法 PHPのインデックスごとに文字列内の文字にアクセスする方法 Jul 12, 2025 am 03:15 AM

PHPでは、四角い括弧または巻き毛装具を使用して文字列固有のインデックス文字を取得できますが、正方形のブラケットをお勧めします。インデックスは0から始まり、範囲外のアクセスはnull値を返し、値を割り当てることができません。 MB_SUBSTRは、マルチバイト文字を処理するために必要です。例:$ str = "hello"; echo $ str [0];出力h; MB_Substr($ str、1,1)などの漢字は、正しい結果を得る必要があります。実際のアプリケーションでは、ループする前に文字列の長さをチェックする必要があり、ダイナミック文字列を有効性のために検証する必要があり、多言語プロジェクトはマルチバイトセキュリティ関数を均一に使用することをお勧めします。

PHPを使用してソーシャル共有機能を構築する方法PHP共有インターフェイス統合プラクティス PHPを使用してソーシャル共有機能を構築する方法PHP共有インターフェイス統合プラクティス Jul 25, 2025 pm 08:51 PM

PHPでソーシャル共有機能を構築するコア方法は、各プラットフォームの要件を満たす共有リンクを動的に生成することです。 1.最初に現在のページまたは指定されたURLおよび記事情報を取得します。 2。urlencodeを使用してパラメーターをエンコードします。 3.各プラットフォームのプロトコルに従って、共有リンクをスプライスおよび生成します。 4.ユーザーがクリックして共有できるように、フロントエンドにリンクを表示します。 5.ページ上のOGタグを動的に生成して、コンテンツディスプレイの共有を最適化します。 6. XSS攻撃を防ぐために、必ずユーザーの入力を逃がしてください。この方法は、複雑な認証を必要とせず、メンテナンスコストが低く、ほとんどのコンテンツ共有ニーズに適しています。

PHPはAIインテリジェント音声アシスタントPHP音声相互作用システムの構築を呼び出す PHPはAIインテリジェント音声アシスタントPHP音声相互作用システムの構築を呼び出す Jul 25, 2025 pm 08:45 PM

ユーザー音声入力がキャプチャされ、フロントエンドJavaScriptのMediareCorder APIを介してPHPバックエンドに送信されます。 2。PHPはオーディオを一時ファイルとして保存し、STTAPI(GoogleやBaiduの音声認識など)を呼び出してテキストに変換します。 3。PHPは、テキストをAIサービス(Openaigptなど)に送信して、インテリジェントな返信を取得します。 4。PHPは、TTSAPI(BaiduやGoogle Voice Synthesisなど)を呼び出して音声ファイルに返信します。 5。PHPは、音声ファイルをフロントエンドに戻し、相互作用を完了します。プロセス全体は、すべてのリンク間のシームレスな接続を確保するためにPHPによって支配されています。

See all articles