php - 在 Woocommerce 中只允许为特定产品类别购买一种产品
问题描述
我想限制用户可以从特定类别购买产品的次数。我在 function.php 中有这段代码(来自这里),它将整个商店限制为一次购买。
add_filter('woocommerce_add_to_cart_validation','rei_woocommerce_add_to_cart_validation',20, 2);
function rei_woocommerce_add_to_cart_validation($valid, $product_id){
$current_user = wp_get_current_user();
if ( wc_customer_bought_product( $current_user->user_email, $current_user->ID, $product_id)) {
wc_add_notice( __( 'Error message here', 'woocommerce' ), 'error' );
$valid = false;
}
return $valid;
}
我需要添加一个条件,即代码仅适用于特定类别的产品(按类别名称或 ID)。
谢谢。
解决方案
在以下代码中,您必须t-shirt
用您的产品类别(名称、slug 或 ID)替换:
add_filter('woocommerce_add_to_cart_validation','filter_add_to_cart_validation',20, 2);
function filter_add_to_cart_validation($valid, $product_id){
$current_user = wp_get_current_user();
if ( wc_customer_bought_product( $current_user->user_email, $current_user->ID, $product_id)
&& has_term( array('t-shirt'), 'product_cat', $product_id ) ) {
wc_add_notice( __( 'Error message here', 'woocommerce' ), 'error' );
$valid = false;
}
return $valid;
}
代码位于您的活动子主题(或活动主题)的 function.php 文件中。测试和工作。
如果您需要排除产品类别,您可以在!
之前添加一个has_term()
:
&& ! has_term( array('t-shirt'), 'product_cat', $product_id ) ) {
推荐阅读
- emacs - emacs org-mode:导出为 HTML 时如何选择字体?
- oauth-2.0 - 在 Ebay Browse API 上缺少用于授权的访问令牌
- python - Pandas 从 excel 创建合并报告
- go - 如何将数据从 CSV 导入 MySQL
- linux - 无法在 linux shell 脚本生成的 .csv 文件中存储为 CCyy-mm-dd 格式
- php - Extbase TYPO3 7.6 中的准备好的语句不起作用
- php - 我们可以在 .tpl 文件中定义变量吗?
- php - 如何将多维数组值显示到html表中
- javascript - 为什么 js parseInt 不适用于这个特定的整数?
- java - 如何使用 grails 将任何网页中的图像转换为 base64 字符串?