歡迎參與有關掌握WooCommerce行動和過濾器系列的第二篇文章。在上一篇文章中,即使是非常基本的,我們也介紹了處理客戶的賬單和運輸地址,以及客戶通過WooCommerce註冊時會發生什麼,並將其發送到第三方網站,例如Salesforce。
>在第二篇文章中,我們將在使用WooCommerce創建電子商務網站時以一些巧妙的方式來操縱購物車。鑰匙要點
>本文提供了有關如何使用操作和過濾器來操縱WooCommerce購物車的詳細說明,包括以編程方式添加和刪除產品,清空購物車以及建立激勵產品系統。
- >以編程方式將產品添加到購物車中,只需要一行代碼,但是在每個頁面上執行的操作中不運行此產品,例如Template_redirect Action。
- >通過編程從購物車中刪除產品比添加一個產品更為複雜。該代碼通過購物車中的每種產品提供了周期,並刪除了指定的產品。 >本文演示瞭如何使用WooCommerce_Proceed_to_checkout Action創建一個按編程清空的按鈕。
- >本文提供了建立激勵產品系統的現實情況,其中將產品提供給滿足特定要求的客戶,例如,訂單的最低總額或特定類別的產品的最低總額。
- 在編程上添加產品
- >在編程中將產品添加到購物車中,只需採用一行代碼。您要做的唯一頭腦風暴是決定何時或為什麼要這樣做。當我們在現實世界中工作時,我們將在本文的第三部分中討論更多。
- > 在購物車中添加產品所需的全部是以下內容:
>注意事項,請確保您不會在每個頁面上運行的操作上運行此操作,例如Template_redirect操作,或者您將其中一種將這些產品添加到購物車中,每個頁面負載或重新載入.盡可能避免這樣做:
<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操作迴聲我們自己的“提交”按鈕,該按鈕將為當前客戶清除購物車。
<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>>下一步是收聽要單擊的按鈕,以便單擊時,我們清除購物車。為此,我們將掛接template_redirect動作。
>
<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>>您現在會注意到,按下按鈕後,將顯示Cart-empty.php而不是常規模板。
>現在我們已經建立瞭如何從購物車中添加或刪除產品,甚至完全清空購物車,讓我們繼續構建現實世界中的情況,知道這種東西會產生很大的不同。

在現實世界的情況下,我們將通過構建一個系統來使所有這些產品都可以贈送產品作為激勵所有客戶,從而使所有這些工作都起作用。好吧,不完全是您所有的客戶,只是那些根據特定要求資格的人。
>問題
我們需要能夠將您選擇的產品作為激勵您的客戶。
>構建一個系統,該系統將允許您根據以下內容贈送激勵產品:
在購物車中具有特定產品
>
- 您的訂單最低總金額
-
>
> 在您的購物車中具有最小重量 -
因為我們將以正確的方式構建它,不僅您能夠將產品贈送給有資格符合這些標準之一的產品,而且您還可以將它們混合在一起並真正縮小誰得到了產品,誰沒有。
>您不僅可以通過符合這些條件之一的資格為客戶提供激勵產品,而且還可以將它們組合起來。例如,例如,您可以測試其購物車至少100美元的人,而“服裝”類別中的產品都可以測試。
>>讓我們快速看一下我們將在一分鐘內寫的功能以及在問題/解決方案方案中所做的工作。
>- >
get_id_from_product($ product,$ check_variations = true) - 獲取產品ID並將其返回。考慮變化ID,因此我們在檢查實際產品ID之前檢查這些ID。
>資格:basedon_specific_product($ product_required) - 檢查客戶是否通過將指定的產品ID作為購物車中的一項。
- >
>資格:$ basedon_weight($ weight_required) - 檢查客戶是否通過在購物車中具有最小的重量來符合激勵措施。
> >
-
>資格:basedon_cart_total($ total_required) - 檢查客戶是否通過計算稅收之前的最低總金額來符合激勵措施。
> >資格符合_basedon_product_category($類別) - 檢查客戶是否通過從購物車中的某個類別中獲得某個類別的產品來符合獎勵。 - > add_incentive_to_cart($ product_id) - 如果客戶有資格
,則將激勵產品添加到購物車中 > emove_incentive_from_cart($ product_id) - 如果客戶未能獲得產品資格,則將激勵產品刪除到購物車中。 -
-
如您所見,這些功能返回“ true”或“ false”,因此它將使我們非常容易將其混合併創建一個非常靈活的激勵程序。現在剩下要做的就是提出您要設定的規則,讓客戶有資格獲得激勵產品,並編寫將與WooCommerce_Check_Cart_Items wooCommerce Action綁定的符合獎勵_FOR_INCENTIVE()函數。
>
下面的 - 是一些示例,說明如何使用這些功能創建真正唯一的東西。
>
只有一個要求
<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>// 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>
>您甚至可以比這更先進,並創建更複雜的方案。下一步的步驟是將其轉變為“班級”,以便您可以擁有多個激勵計劃,每個計劃都有自己的獨特資格規則集。
><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>
就是本文。在本系列的第三部分中,我們將使用在新產品/編輯產品屏幕上運行的操作和過濾器。然後,我們將探索如何使用API來添加自定義字段。>關於WooCommerce行動和過濾器的常見問題(常見問題解答)
> woocommerce操作和過濾器之間有什麼區別? >動作和過濾器是WooCommerce中的兩種類型的掛鉤。操作允許您添加或更改功能,例如將新部分添加到您的網站或修改結帳過程。另一方面,過濾器允許您在WooCommerce中修改數據。例如,您可以使用過濾器更改產品的價格或修改按鈕的文本。>
如何在WooCommerce Cart中添加自定義字段?自定義字段到WooCommerce購物車,您可以使用'woocommerce_cart_item_data'過濾器。該過濾器允許您將自定義數據添加到購物車項目。然後,您可以使用'woocommerce_get_item_data'過濾器在購物車中顯示此自定義數據。 >如何修改WooCommerce結帳過程? >>和過濾器。例如,您可以使用'woocommerce_checkout_fields'過濾器修改結帳字段或'woocommerce_checkout_process'操作將自定義驗證添加到結帳過程中。
>我可以使用鉤子修改WooCommerce Emails嗎?是的,WooCommerce提供了幾個掛鉤,可讓您修改WooCommerce發送的電子郵件。例如,您可以使用“ woocommerce_email_header”和“ woocommerce_email_footer”操作來修改電子郵件的標題和頁腳,或“ woocommerce_email_email_order_details”的操作來修改電子郵件中的訂單詳細信息。
如何更改WooCommerce中的按鈕的文本?
更改WooCommerce中按鈕的文本,您可以使用'woocommerce_order_order_button_text'過濾器。該過濾器允許您修改結帳頁面上的“訂單”按鈕的文本。
如何將自定義消息添加到woocommerce購物車頁面?
您可以將自定義消息添加到使用“ WooCommerce_before_cart”操作的WooCommerce購物車頁面。此操作使您可以在購物車內容之前添加自定義內容。 >我可以使用鉤子修改WooCommerce產品頁面嗎?>要修改WooCommerce中的訂單詳細信息,您可以使用'woocommerce_order_details_after_oder_order_table'action'操作。此操作允許您在訂單詳細信息頁面上的訂單表之後添加自定義內容。 我可以使用鉤子將自定義字段添加到WooCommerce Checkout頁面嗎? 'WooCommerce_Checkout_fields'過濾器將自定義字段添加到WooCommerce的結帳頁面。該過濾器允許您修改結帳字段,包括添加新字段。 >我如何使用掛鉤? >如何更改產品中的產品價格以更改WooCommerce中產品的價格,您可以使用'woocommerce_get_price_html'過濾器。該過濾器允許您修改價格HTML,其中包括產品的價格。 - >
以上是WooCommerce行動和過濾操作購物車的詳細內容。更多資訊請關注PHP中文網其他相關文章!

在 WordPress 網站上啟用評論功能,可以為訪客提供參與討論和分享反饋的平台。為此,請按照以下步驟操作:啟用評論:在儀錶盤中,導航至“設置”>“討論”,並選中“允許評論”複選框。創建評論表單:在編輯器中,單擊“添加塊”並蒐索“評論”塊,將其添加到內容中。自定義評論表單:通過設置標題、標籤、佔位符和按鈕文本來定制評論塊。保存更改:單擊“更新”以保存評論框並將其添加到頁面或文章中。

如何復制 WordPress 子站?步驟:在主站創建子站。在主站克隆子站。將克隆導入目標位置。更新域名(可選)。分開插件和主題。

在WordPress中創建自定義頁頭的步驟如下:編輯主題文件“header.php”。添加您的網站名稱和描述。創建導航菜單。添加搜索欄。保存更改並查看您的自定義頁頭。

WordPress 網站中啟用評論功能:1. 登錄管理面板,轉到 "設置"-"討論",勾選 "允許評論";2. 選擇顯示評論的位置;3. 自定義評論表單;4. 管理評論,批准、拒絕或刪除;5. 使用 <?php comments_template(); ?> 標籤顯示評論;6. 啟用嵌套評論;7. 調整評論外形;8. 使用插件和驗證碼防止垃圾評論;9. 鼓勵用戶使用 Gravatar 頭像;10. 創建評論指

可以通過 WordPress 安裝 FTP 插件,配置 FTP 連接,然後使用文件管理器上傳源碼。步驟包括:安裝 FTP 插件、配置連接、瀏覽上傳位置、上傳文件、檢查上傳成功。

如何復制 WordPress 代碼?從管理界面複製:登錄 WordPress 網站,導航到目標位置,選擇代碼並按 Ctrl C (Windows)/Command C (Mac) 複製代碼。從文件複製:使用 SSH 或 FTP 連接到服務器,導航到主題或插件文件,選擇代碼並按 Ctrl C (Windows)/Command C (Mac) 複製代碼。

WordPress 錯誤解決指南:500 內部服務器錯誤:禁用插件或檢查服務器錯誤日誌。 404 未找到頁面:檢查 permalink 並確保頁面鏈接正確。白屏死機:增加服務器 PHP 內存限制。數據庫連接錯誤:檢查數據庫服務器狀態和 WordPress 配置。其他技巧:啟用調試模式、檢查錯誤日誌和尋求支持。預防錯誤:定期更新 WordPress、僅安裝必要插件、定期備份網站和優化網站性能。

如何在 WordPress 中關閉評論?特定文章或頁面:在編輯器中取消選中“討論”下的“允許評論”。整個網站:在“設置”->“討論”中取消選中“允許發表評論”。使用插件:安裝 Disable Comments 等插件禁用評論。編輯主題文件:通過編輯 comments.php 文件移除評論表單。自定義代碼:使用 add_filter() 函數禁用評論。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

Dreamweaver Mac版
視覺化網頁開發工具

SublimeText3 Linux新版
SublimeText3 Linux最新版

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

SublimeText3漢化版
中文版,非常好用