WooCommerce行动和过滤操作购物车
欢迎参与有关掌握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><?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>
>编程
清空购物车>更好地说明如何以编程方式清空购物车,让我们在购物车中添加一个按钮,这将允许客户单击并清除他们的购物车。

>让我们使用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><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>
>现在我们已经建立了如何从购物车中添加或删除产品,甚至完全清空购物车,让我们继续构建现实世界中的情况,知道这种东西会产生很大的不同。

在现实世界的情况下,我们将通过构建一个系统来使所有这些产品都可以赠送产品作为激励所有客户,从而使所有这些工作都起作用。好吧,不完全是您所有的客户,只是那些根据特定要求资格的人。
>问题
我们需要能够将您选择的产品作为激励您的客户。
>构建一个系统,该系统将允许您根据以下内容赠送激励产品:
在购物车中具有特定产品
>
- 您的订单最低总金额
-
>
> 在您的购物车中具有最小重量 -
因为我们将以正确的方式构建它,不仅您能够将产品赠送给有资格符合这些标准之一的产品,而且您还可以将它们混合在一起并真正缩小谁得到了产品,谁没有。
>您不仅可以通过符合这些条件之一的资格为客户提供激励产品,而且还可以将它们组合起来。例如,例如,您可以测试其购物车至少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><?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><?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><?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><?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><?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>
登录后复制>您甚至可以比这更先进,并创建更复杂的方案。下一步的步骤是将其转变为“班级”,以便您可以拥有多个激励计划,每个计划都有自己的独特资格规则集。
>就是本文。在本系列的第三部分中,我们将使用在新产品/编辑产品屏幕上运行的操作和过滤器。然后,我们将探索如何使用API来添加自定义字段。<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>
登录后复制>关于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中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

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

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

博客是人们在网上表达观点、意见和见解的理想平台。许多新手渴望建立自己的网站,却因担心技术障碍或成本问题而犹豫不决。然而,随着平台不断发展以满足初学者的能力和需求,现在开始变得比以往任何时候都更容易。 本文将逐步指导您如何建立一个WordPress博客,从主题选择到使用插件提升安全性和性能,助您轻松创建自己的网站。 选择博客主题和方向 在购买域名或注册主机之前,最好先确定您计划涵盖的主题。个人网站可以围绕旅行、烹饪、产品评论、音乐或任何激发您兴趣的爱好展开。专注于您真正感兴趣的领域可以鼓励持续写作

有四种方法可以调整 WordPress 文章列表:使用主题选项、使用插件(如 Post Types Order、WP Post List、Boxy Stuff)、使用代码(在 functions.php 文件中添加设置)或直接修改 WordPress 数据库。

您想了解如何在父分类存档页面上显示子分类吗?在自定义分类存档页面时,您可能需要执行此操作,以使其对访问者更有用。在本文中,我们将向您展示如何在父分类存档页面上轻松显示子分类。为什么在父分类存档页面上显示子分类?通过在父分类存档页面上显示所有子分类,您可以使其不那么通用,对访问者更有用。例如,如果您运行一个关于书籍的WordPress博客,并且有一个名为“主题”的分类法,那么您可以添加“小说”、“非小说”等子分类法,以便您的读者可以

最近,我们向您展示了如何通过允许用户将自己喜欢的帖子保存在个性化库中来为用户创建个性化体验。您可以通过在某些地方(即欢迎屏幕)使用他们的名字,将个性化结果提升到另一个水平。幸运的是,WordPress使获取登录用户的信息变得非常容易。在本文中,我们将向您展示如何检索与当前登录用户相关的信息。我们将利用get_currentuserinfo(); 功能。这可以在主题中的任何地方使用(页眉、页脚、侧边栏、页面模板等)。为了使其工作,用户必须登录。因此我们需要使用

过去,我们分享过如何使用PostExpirator插件使WordPress中的帖子过期。好吧,在创建活动列表网站时,我们发现这个插件非常有用。我们可以轻松删除过期的活动列表。其次,多亏了这个插件,按帖子过期日期对帖子进行排序也非常容易。在本文中,我们将向您展示如何在WordPress中按帖子过期日期对帖子进行排序。更新了代码以反映插件中更改自定义字段名称的更改。感谢Tajim在评论中让我们知道。在我们的特定项目中,我们将事件作为自定义帖子类型。现在

WordPress对初学者来说容易上手。1.登录后台后,用户界面直观,简洁的仪表板提供所有必要功能链接。2.基本操作包括创建和编辑内容,所见即所得的编辑器简化了内容创建。3.初学者可以通过插件和主题扩展网站功能,学习曲线存在但可以通过实践掌握。

我们的一位用户询问其他网站如何在页脚中显示查询数量和页面加载时间。您经常会在网站的页脚中看到这一点,它可能会显示类似以下内容:“1.248秒内64个查询”。在本文中,我们将向您展示如何在WordPress中显示查询数量和页面加载时间。只需将以下代码粘贴到主题文件中您喜欢的任何位置(例如footer.php)。queriesin

您是否正在寻找自动化 WordPress 网站和社交媒体帐户的方法? 通过自动化,您将能够在 Facebook、Twitter、LinkedIn、Instagram 等平台上自动分享您的 WordPress 博客文章或更新。 在本文中,我们将向您展示如何使用 IFTTT、Zapier 和 Uncanny Automator 轻松实现 WordPress 和社交媒体的自动化。 为什么要自动化 WordPress 和社交媒体? 自动化您的WordPre
