WooCommerceアクションとフィルターのマスタリングに関するシリーズの2番目の記事へようこそ。前の記事では、非常に基本的なものでしたが、顧客の請求と配送先住所の処理と、顧客がWooCommerceを介して登録し、SalesforceのようなサードパーティのWebサイトに送信したときに何が起こるかについて説明します。 この2番目の記事では、WooCommerceを使用してeコマースWebサイトを作成しているときに遭遇する可能性のある現実世界のシナリオで、いくつかの巧妙な方法でカートを操作します。
キーテイクアウト
この記事では、プログラムで製品の追加と削除、カートの空き地、インセンティブ製品システムのセットアップなど、アクションとフィルターを使用してWooCommerceカートを操作する方法に関する詳細な指示を提供します。
カートに製品をプログラム的に追加するには、1行のコードのみが必要ですが、テンプレート_redirectアクションなど、すべてのページで実行するアクションでこれを実行しないことが重要です。- カートから製品をプログラム的に削除することは、それを追加するよりも複雑です。このコードは、カート内の各製品のサイクルを提供し、指定された製品を削除します。
- この記事では、WooCommerce_ProCeed_To_Checkoutアクションを使用して、プログラムでカートを空にするボタンを作成する方法を示しています。 この記事は、インセンティブ製品システムを構築する実世界のシナリオを提供します。このシナリオでは、特定のカテゴリから注文または製品の最小額を持っているなど、特定の要件を満たす顧客に製品が配られます。 🎜>
- カートに製品をプログラム的に追加します
- カートに製品をプログラムで追加すると、コードの1行しか必要ありません。あなたがしている唯一のブレインストーミングは、いつ、またはなぜそれをやりたいのかを決定することです。この記事の後半で、この記事の後半で、現実世界のシナリオに取り組むときに、これについて詳しく説明します。
- カートに製品を追加するのに必要なのは、次のことだけです。
- 注意事項として、Template_redirectアクションなど、すべてのページで実行されるアクションでこれを実行しないか、これらの製品の1つをすべてのページのロードまたはリロードするように、これを実行しないようにしてください。可能な限りこれを避けてください:
<span><span><?php </span></span><span><span>// Takes the Product ID and the Quantity </span></span><span><span>WC()->cart->add_to_cart( 73, 1 );</span></span></span>
プログラムでカートから製品を削除します
この質問が、ほとんど回答がほとんどないさまざまなフォーラムやウェブサイトで無限の数を尋ねられているのを見ました。うまくいけば、これが次にカートから製品を取り外したいときに役立つことを願っています。また、あなたがする唯一のブレーンストーミングは、いつ、またはカートから製品を削除したいのかということです。次のコードは、誰もが店の製品をチェックアウトすることを防ぎます。なぜあなたがそのようなことをしたいのかはわかりませんが、カートに製品を追加したときの前の例ほど単純ではないカートから製品を取り外すための手順を示します。
<span><span><?php </span></span><span><span>// template_redirect runs once for every page so you'll be </span></span><span><span>// increasing the quantity by one on every page load </span></span><span><span>add_action( 'template_redirect', 'add_random_product' ); </span></span><span><span>function add_random_product() { </span></span><span> <span>WC()->cart->add_to_cart( 73, 1 ); </span></span><span><span>}</span></span></span>カートをプログラム的に空にします
プログラムでカートを空にする方法をよりよく説明するには、顧客がクリックしてカートをクリアできるようにするボタンをカートに追加しましょう。
WooCommerce_ProCeed_To_Checkoutアクションを使用してみましょう。

次のステップは、ボタンがクリックされるのを聞くことで、クリックするとカートがクリアされます。そのために、Template_redirectアクションに接続します。
<span><span><?php </span></span><span><span>add_action( 'template_redirect', 'remove_product_from_cart' ); </span></span><span><span>function remove_product_from_cart() { </span></span><span> <span>// Run only in the Cart or Checkout Page </span></span><span> <span>if( is_cart() || is_checkout() ) { </span></span><span> <span>// Set the product ID to remove </span></span><span> <span>$prod_to_remove = 56; </span></span><span> </span><span> <span>// Cycle through each product in the cart </span></span><span> <span>foreach( WC()->cart->cart_contents as $prod_in_cart ) { </span></span><span> <span>// Get the Variation or Product ID </span></span><span> <span>$prod_id = ( isset( $prod_in_cart['variation_id'] ) && $prod_in_cart['variation_id'] != 0 ) ? $prod_in_cart['variation_id'] : $prod_in_cart['product_id']; </span></span><span> </span><span> <span>// Check to see if IDs match </span></span><span> <span>if( $prod_to_remove == $prod_id ) { </span></span><span> <span>// Get it's unique ID within the Cart </span></span><span> <span>$prod_unique_id = WC()->cart->generate_cart_id( $prod_id ); </span></span><span> <span>// Remove it from the cart by un-setting it </span></span><span> <span>unset( WC()->cart->cart_contents[$prod_unique_id] ); </span></span><span> <span>} </span></span><span> <span>} </span></span><span> </span><span> <span>} </span></span><span><span>}</span></span></span>ボタンを押した後、通常のテンプレートの代わりにcart-empty.phpが表示されていることに気付くでしょう。
カートから製品を追加または削除する方法を確立したので、カートを完全に空にしても、この種のものを知ることが大きな違いを生む現実世界のシナリオを構築しましょう。
<span><span><?php </span></span><span><span>add_action( 'woocommerce_proceed_to_checkout', 'insert_empty_cart_button' ); </span></span><span><span>function insert_empty_cart_button() { </span></span><span> <span>// Echo our Empty Cart button </span></span><span> <span>echo '<input type="submit" name="empty_cart" value="Empty Cart">'; </span></span><span><span>}</span></span></span>インセンティブ製品
現実世界のシナリオでは、すべての顧客にインセンティブとして製品を提供できるシステムを構築することで、これらすべてを機能させることになります。まあ、すべての顧客と正確にはなく、特定の要件に基づいて資格がある人だけです。

顧客へのインセンティブとして、お好みの製品を提供できる必要があります。
ソリューション
以下に基づいてインセンティブ製品を配ることができるシステムを構築します。
カートに特定の製品がある注文の最低総額 特定のカテゴリから製品を持っている-
これらの基準のいずれかに資格を与えることにより、顧客にインセンティブ製品を提供できるだけでなく、それらを組み合わせる力があります。たとえば、順番に言葉で言えば、カートに少なくとも100ドルの合計100ドルと「衣類」カテゴリの製品をテストすることができます。
1分で書く機能と、問題/ソリューションシナリオでそれぞれが何をするかを簡単に見てみましょう。- get_id_from_product($ product、$ check_variations = true) - 製品IDを取得して返します。バリエーションIDを考慮に入れるので、実際の製品IDを確認する前にこれらを確認してください。
qualififies_basedon_specific_product($ product_required) - 指定された製品IDをカート内のアイテムの1つとして使用することにより、顧客がインセンティブの資格があるかどうかを確認します。
qualififies_basedon_weight($ weight_required) - 顧客がカートに最小重量を持っていることでインセンティブの資格があるかどうかを確認します。
qualififies_basedon_cart_total($ total_required) - 税金が計算される前に最小合計金額を持つことにより、顧客がインセンティブの資格があるかどうかを確認します。
qualififies_basedon_product_category($ category) - 顧客がカート内の特定のカテゴリの製品を持っていることでインセンティブの資格があるかどうかを確認します。
add_incentive_to_cart($ product_id) - 顧客が資格がある場合は、インセンティブ製品をカートに追加します
remove_incentive_from_cart($ product_id) - 顧客が製品の資格を持っていなかった場合、インセンティブ製品をカートに削除します。
qualifies_for_incentive() - これは、顧客がインセンティブの資格を得るために一致する必要があるルールを持っているため、魔法が起こる場所です。この関数は、インセンティブプログラムのロジックを処理します。
-
- 1つの要件のみ
<span><span><?php </span></span><span><span>// Takes the Product ID and the Quantity </span></span><span><span>WC()->cart->add_to_cart( 73, 1 );</span></span></span>
<span><span><?php </span></span><span><span>// template_redirect runs once for every page so you'll be </span></span><span><span>// increasing the quantity by one on every page load </span></span><span><span>add_action( 'template_redirect', 'add_random_product' ); </span></span><span><span>function add_random_product() { </span></span><span> <span>WC()->cart->add_to_cart( 73, 1 ); </span></span><span><span>}</span></span></span>
カートの合計税を除く<span><span><?php </span></span><span><span>add_action( 'template_redirect', 'remove_product_from_cart' ); </span></span><span><span>function remove_product_from_cart() { </span></span><span> <span>// Run only in the Cart or Checkout Page </span></span><span> <span>if( is_cart() || is_checkout() ) { </span></span><span> <span>// Set the product ID to remove </span></span><span> <span>$prod_to_remove = 56; </span></span><span> </span><span> <span>// Cycle through each product in the cart </span></span><span> <span>foreach( WC()->cart->cart_contents as $prod_in_cart ) { </span></span><span> <span>// Get the Variation or Product ID </span></span><span> <span>$prod_id = ( isset( $prod_in_cart['variation_id'] ) && $prod_in_cart['variation_id'] != 0 ) ? $prod_in_cart['variation_id'] : $prod_in_cart['product_id']; </span></span><span> </span><span> <span>// Check to see if IDs match </span></span><span> <span>if( $prod_to_remove == $prod_id ) { </span></span><span> <span>// Get it's unique ID within the Cart </span></span><span> <span>$prod_unique_id = WC()->cart->generate_cart_id( $prod_id ); </span></span><span> <span>// Remove it from the cart by un-setting it </span></span><span> <span>unset( WC()->cart->cart_contents[$prod_unique_id] ); </span></span><span> <span>} </span></span><span> <span>} </span></span><span> </span><span> <span>} </span></span><span><span>}</span></span></span>
<span><span><?php </span></span><span><span>add_action( 'woocommerce_proceed_to_checkout', 'insert_empty_cart_button' ); </span></span><span><span>function insert_empty_cart_button() { </span></span><span> <span>// Echo our Empty Cart button </span></span><span> <span>echo '<input type="submit" name="empty_cart" value="Empty Cart">'; </span></span><span><span>}</span></span></span>
非常に柔軟なコードベースがあるため、それを混同して、本当にインセンティブプログラムをユニークにすることができます。以下は、必要に応じてより多くの条件を追加することがどれほど簡単かを示すいくつかの例です。 カート内のカテゴリまたは最小カートの合計
製品<span><span><?php </span></span><span><span>// Let's wait for the button to be clicked on </span></span><span><span>add_action( 'template_redirect', 'empty_cart_button_handler' ); </span></span><span><span>function empty_cart_button_handler() { </span></span><span> <span>if( isset( $_POST['empty_cart'] ) && $_SERVER['REQUEST_METHOD'] == "POST" ) { </span></span><span> <span>WC()->cart->empty_cart( true ); </span></span><span> <span>} </span></span><span><span>}</span></span></span>
それよりも高度になり、より複雑なシナリオを作成することもできます。次のステップは、これを「クラス」に変えることです。これにより、複数のインセンティブプログラムを作成できるようになります。 この記事はウコンマースのアクションとフィルターに関するよくある質問(FAQ)<span><span><?php </span></span><span><span>/** </span></span><span><span> * Will extract the Variation ID if available otherwise it will get the Product ID </span></span><span><span> * <span>@param $product Product </span></span></span><span><span> * <span>@param <span>bool</span> $check_variations Whether or not to check for variation IDs </span></span></span><span><span> * <span>@return <span>mixed</span> </span></span></span><span><span> */ </span></span><span><span>function get_id_from_product( $product, $check_variations = true ) { </span></span><span> <span>// Are we taking variations into account? </span></span><span> <span>if( $check_variations ) { </span></span><span> <span>// Ternary Operator </span></span><span> <span>// http://php.net/manual/en/language.operators.comparison.php </span></span><span> <span>return ( isset( $product['variation_id'] ) </span></span><span> <span>&& ! empty( $product['variation_id']) </span></span><span> <span>&& $product['variation_id'] != 0 ) </span></span><span> <span>? $product['variation_id'] </span></span><span> <span>: $product['product_id']; </span></span><span> <span>} else { </span></span><span> <span>// No variations, just need the product IDs </span></span><span> <span>return $product['product_id']; </span></span><span> <span>} </span></span><span><span>} </span></span><span> </span><span><span>/** </span></span><span><span> * Checks the existence of a specific product in the cart </span></span><span><span> * <span>@param $product_required The Product ID required to be in the cart </span></span></span><span><span> * <span>@return <span>bool</span> </span></span></span><span><span> */ </span></span><span><span>function qualifies_basedon_specific_product( $product_required ) { </span></span><span> <span>/* </span></span><span><span> * We only want to run this on the cart or checkout page </span></span><span><span> */ </span></span><span> <span>if( is_cart() || is_checkout () ) { </span></span><span> <span>foreach( WC()->cart->cart_contents as $key => $product_in_cart ) { </span></span><span> <span>if( $product_required == get_id_from_product( $product_in_cart ) ) { </span></span><span> <span>return true; </span></span><span> <span>} </span></span><span> <span>} </span></span><span> <span>// Return false in case anything fails </span></span><span> <span>return false; </span></span><span> <span>} </span></span><span><span>} </span></span><span> </span><span><span>/** </span></span><span><span> * Checks the cart for the weight required to qualify for the incentive </span></span><span><span> * <span>@param $weight_required Weight Required </span></span></span><span><span> * <span>@return <span>bool</span> </span></span></span><span><span> */ </span></span><span><span>function qualifies_basedon_weight( $weight_required ) { </span></span><span> </span><span> <span>/* </span></span><span><span> * We only want to run this on the cart or checkout page </span></span><span><span> */ </span></span><span> <span>if( is_cart() || is_checkout () ) { </span></span><span> <span>if( $weight_required >= WC()->cart->cart_contents_weight ) { </span></span><span> <span>return true; </span></span><span> <span>} </span></span><span> <span>} </span></span><span> <span>// Return false in case anything fails </span></span><span> <span>return false; </span></span><span><span>} </span></span><span> </span><span><span>/** </span></span><span><span> * Checks the cart for the Total excluding taxes </span></span><span><span> * <span>@param $total_required </span></span></span><span><span> * <span>@return <span>bool</span> </span></span></span><span><span> */ </span></span><span><span>function qualifies_basedon_cart_total( $total_required ) { </span></span><span> <span>/* </span></span><span><span> * We only want to run this on the cart or checkout page </span></span><span><span> */ </span></span><span> <span>if( is_cart() || is_checkout () ) { </span></span><span> <span>if( WC()->cart->subtotal_ex_tax >= $total_required ) { </span></span><span> <span>return true; </span></span><span> <span>} </span></span><span> <span>} </span></span><span> <span>// Return false in case anything fails </span></span><span> <span>return false; </span></span><span><span>} </span></span><span> </span><span><span>/** </span></span><span><span> * Checks the cart to verify whether or not a product from a Category is in the cart </span></span><span><span> * <span>@param $category Accepts the Product Category Name, ID, Slug or array of them </span></span></span><span><span> * <span>@return <span>bool</span> </span></span></span><span><span> */ </span></span><span><span>function qualifies_basedon_product_category( $category ) { </span></span><span> <span>foreach( WC()->cart->cart_contents as $key => $product_in_cart ) { </span></span><span> <span>if( has_term( $category, 'product_cat', get_id_from_product( $product_in_cart, false ) ) ) { </span></span><span> <span>return true; </span></span><span> <span>} </span></span><span> <span>} </span></span><span> <span>// Return false in case anything fails </span></span><span> <span>return false; </span></span><span><span>} </span></span><span> </span><span><span>/** </span></span><span><span> * Adds a specific product to the cart </span></span><span><span> * <span>@param $product_id Product to be added to the cart </span></span></span><span><span> */ </span></span><span><span>function add_incentive_to_cart( $product_id ) { </span></span><span> <span>// Check the cart for this product </span></span><span> <span>$cart_id = WC()->cart->generate_cart_id( $product_id ); </span></span><span> <span>$prod_in_cart = WC()->cart->find_product_in_cart( $cart_id ); </span></span><span> <span>// Add the product only if it's not in the cart already </span></span><span> <span>if( ! $prod_in_cart ) { </span></span><span> <span>WC()->cart->add_to_cart( $product_id ); </span></span><span> <span>} </span></span><span><span>} </span></span><span> </span><span><span>/** </span></span><span><span> * Removes a specific product from the cart </span></span><span><span> * <span>@param $product_id Product ID to be removed from the cart </span></span></span><span><span> */ </span></span><span><span>function remove_incentive_from_cart( $product_id ) { </span></span><span> <span>$prod_unique_id = WC()->cart->generate_cart_id( $product_id ); </span></span><span> <span>// Remove it from the cart by un-setting it </span></span><span> <span>unset( WC()->cart->cart_contents[$prod_unique_id] ); </span></span><span><span>}</span></span></span>
woocommerceアクションとフィルターの違いは何ですか?アクションとフィルターは、WooCommerceの2つのタイプのフックです。アクションを使用すると、Webサイトに新しいセクションを追加したり、チェックアウトプロセスを変更したりするなど、機能を追加または変更できます。一方、フィルターでは、WooCommerce内のデータを変更できます。たとえば、フィルターを使用して製品の価格を変更したり、ボタンのテキストを変更したりできます。 WooCommerceカートにカスタムフィールドでは、 'Woocommerce_cart_item_data'フィルターを使用できます。このフィルターを使用すると、CARTアイテムにカスタムデータを追加できます。次に、「woocommerce_get_item_data 'フィルターを使用してカートにこのカスタムデータを表示できます。およびフィルター。たとえば、「woocommerce_checkout_fields 'フィルターを使用してチェックアウトフィールドを変更できます。または、「woocommerce_checkout_process'アクション」を使用してチェックアウトプロセスにカスタム検証を追加します。はい、WooCommerceはWooCommerceから送信された電子メールを変更できるいくつかのフックを提供します。たとえば、「WOOCOMMERCE_EMAIL_HEADER」および「WOOCOMMERCE_EMAIL_FOOTER」アクションを使用して、電子メールのヘッダーとフッターを変更するか、「WOOCOMMERCE_EMAIL_ORDER_DETAILS」アクションを使用して、電子メールに含まれる注文の詳細を変更します。
woocommerceのボタンのテキストを変更するにはどうすればよいですか?
フックを使用してWooCommerce製品ページを変更できますか? 。たとえば、「WOOCOMMERCE_BEFORE_SINGLE_PRODUCT_SUMMARY」アクションを使用して、製品の要約の前にカスタムコンテンツを追加できます。
woocommerceの注文詳細を変更するには、 'woocommerce_order_details_after_order_orde_table'アクションを使用できます。このアクションを使用すると、注文詳細ページに注文テーブルの後にカスタムコンテンツを追加できます。 'woocommerce_checkout_fields'フィルターで、WooCommerceのチェックアウトページにカスタムフィールドを追加します。このフィルターを使用すると、新しいフィールドの追加を含むチェックアウトフィールドを変更できます。 、「woocommerce_get_price_html」フィルターを使用できます。このフィルターを使用すると、製品の価格を含む価格HTMLを変更できます。
以上がカートを操作するためのwoocommerceアクションとフィルターの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

wordpresscanhandlelargewebsiteswithcarefulningandoptimization.1)usecachingtoreduceServerload.2)optimizeyourdatabaseRegularly.3)rivenceCdntodistributecontent.4)vetpluginsandmestoavoidConflicts.5)

WordPressは非常にカスタマイズされており、幅広い柔軟性とカスタマイズ可能性を提供します。 1)テーマとプラグインのエコシステムを通じて、2)Restapiをフロントエンド開発に使用する、3)詳細なコードレベルの変更、ユーザーは高度にパーソナライズされたエクスペリエンスを達成できます。ただし、カスタマイズには、PHP、JavaScript、CSSなどのマスタリングテクノロジーが必要であり、潜在的な問題を回避するために、パフォーマンスの最適化とプラグインの選択に注意を払います。

wordpressisAnexcellentchoiceforacmsduetoitsususer-frendly-interface、広範なセコーシステム、セコー可能性、スケーラビリティ、およびsupportiveCommunity.1)その直感的な装備の問題は、吸収剤を使用してから、吸血鬼を採用してから植え付けのために

wordpressisuser-friendlyduetoitsIntutiveInterfaceandcms、それはfromdesign.itoffersarichtexteditorを使用することを検出するためにcreationAndialibraryfororganization.its flexivitiesisivedyvysencedancevancevencevencedemourthemoursemasensansandyansemas canimpactperomance

wordpressisutableforbusinesssettings.1)ituportse-commercewithwoocommerce、productmanagementandpaymentprocessing.2)itservesasacmsforcoporateblogs、entancingseoandengagement.3)customizationibultiblewithwithwithsemesandplugins.3)

wordpressisnotidealforhigh-trafficwebsites、customandcomplexApplications、セキュリティ感覚化、リアルチメダタプロセシング、および高地識別型インターフェース、forhhigh-trafficsites、usenext.jsorcustomsolutions; forplecluctlications、optfordjangaNgoRub

はい、YouCanbuildAblogWithWordPress.1)BetWeenWordPress.comforbeginnersorwordpress.orgformorecontrol.2)SelectAtheMetopersuerizeUourBlog'slook.3)usepluginStoenHanceFunctionality、likeSeoandsocialmedientegreation.4)

wordpresscanbesecureifmanagedperly.1)keepthewordpresscoreupdatedtopatchvulnerabilities.2)vetandupdatepluginsandとthemes from-reputabless.3)emforcestrongwordsandusetwo-factoruthentication.4)


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

SublimeText3 英語版
推奨: Win バージョン、コードプロンプトをサポート!

ドリームウィーバー CS6
ビジュアル Web 開発ツール

EditPlus 中国語クラック版
サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

DVWA
Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、
