首页 > 解决方案 > 在所有其他通知之后在结帐时添加 WC 通知

问题描述

我正在尝试使用以下代码在 WooCommerce 结帐中添加错误通知:

add_action('woocommerce_after_checkout_validation', 'validate_checkout_email_opt', 999);

function validate_checkout_email_opt()
{
    if (!$_POST['terms_emails']) {
        wc_add_notice(__('Bitte stimme zu, dass du den Hinweis zu unseren E-Mail- und SMS-Benachrichtigungen gelesen hast.'), 'error');
    }
}

显示错误消息,但不幸的是,它显示在所有错误列表的顶部。我想把它放在最后(因为它是结帐表单中的最后一个字段),或者理想情况下,把它放在列表中的特定位置。

我已经扫描了 WooCommerce 的核心代码,但找不到可用于此目的的过滤器或操作。我尝试了许多不同的过滤器,但都没有成功。它要么根本不显示,要么在开始时显示。

将“优先级”设置为“999”也无济于事。

有人有这个问题的解决方案吗?谢谢!

我正在使用 WC V 3.3.5

标签: wordpresswoocommerce

解决方案


你应该这样做。

add_action('woocommerce_after_checkout_validation', 'validate_checkout_email_opt', 10, 2);

function validate_checkout_email_opt( $data, $errors )
{
    if (!$_POST['terms_emails']) {
        $errors->add( 'terms-email', __('Bitte stimme zu, dass du den Hinweis zu unseren E-Mail- und SMS-Benachrichtigungen gelesen hast.') );
    }
}

样本结果:

reigelgallarde.me


推荐阅读