我需要判断是否正在使用此代码购买特定产品,但它不起作用.

function validate($data,$errors) { 

    if ( ( is_product() && get_the_ID() == 1566 ) || is_single('1566') ) {
    return;

$p = wc_get_product('1566');

$message = sprintf( __( '%s can only be purchased by some customers.</div>', 'text-domain' ), $p->get_name() );

        wc_add_notice( $message, 'error' );

    }
}
add_action('woocommerce_after_checkout_validation', 'validate',10,2);

推荐答案

add_filter('woocommerce_after_checkout_validation', 'woocommerce_after_checkout_validation', 10, 2);

function woocommerce_after_checkout_validation($data, $errors) {

    foreach (WC()->cart->get_cart() as $cart_item_key => $values) {
        $product = $values['data'];

        if ($product) {
            if (1566 === $product->get_id()) {
                $errors->add('terms', __('You cannot purchase this product.', 'woocommerce'));
            }
        }
    }
    return $data;
}

Php相关问答推荐

msgraph-sdk-php v2如何传递skiptoken到request?

如何使用ms graph php sdk v2列出具有已知路径的DriveItem的子项

Symfony装置加载:try 从命名空间加载类";ClassUtils";Doctrine\Common\Util";

PHP测试字符串的所有POST值

在Laravel中为表添加前缀,以将它们逻辑地分组

PHP Laravel Web应用启动时间&>15秒

Apache只允许index.php-不从根目录工作

如何按类别过滤自定义帖子类型

CKEDITOR-如何在PHP中判断提交后的空数据

未定义的类型';PDF';在Laravel 8

可以';exec、system和shell_exec PHP函数中的命令字符串上的字符数不得超过8175

允许在WooCommerce管理订单列表中使用计费邮箱进行搜索

调用未定义的方法 mysqli::execute_query()

为什么在 phpunit 的开头测试 PHP_VERSION?

PHP 中的正则表达式,具有字符范围,但不包括特定字符

如何在 Process facade 中转义特殊字符?

按数字然后按字符串对关联 PHP 数组进行排序

为什么非贪婪匹配会消耗整个模式,即使后面跟着另一个非贪婪匹配

一个php应用程序可以实例化多个RNG吗

如何通过路由传递变量