WooCommerce 的 MailChimp:在结帐字段中间添加复选框

问题描述 投票:0回答:1

WooCommerce 的 MailChimp 插件很棒,但我刚刚得到了一个设计,其中 WooCommerce 结帐中的 '订阅我们的新闻通讯' 复选框紧接在电子邮件字段之后,而不是位于特定部分的底部:

WooCommerce checkout page showing the first name, last name & email fields, immediately followed by MailChimp's sign-up checkbox

该插件允许您在您希望复选框出现的位置输入操作挂钩;例如

woocommerce_checkout_before_customer_details
woocommerce_after_checkout_billing_form
等,它允许您将复选框放置在某个 section 之前或之后(只要有一个钩子),但不能放在各个字段中。

有没有办法将 MailChimp 复选框添加到某个字段之前或之后的特定点?

php wordpress woocommerce mailchimp
1个回答
0
投票

结帐字段在循环内输出,该循环使用

woocommerce_form_field()
函数回显每个字段:

$fields = $checkout->get_checkout_fields( 'billing' );

foreach ( $fields as $key => $field ) {
    woocommerce_form_field( $key, $field, $checkout->get_value( $key ) );
}

此函数针对每个特定字段类型(例如 woocommerce_form_field_email)有多个

filters
,但没有 action 挂钩。

但是,您可以使用这些过滤器之一并使用一些技巧来添加您自己的挂钩:

///
//  Add MailChimp checkbox after email field
///

function vnm_mc_after_email_field($field, $key, $args, $value) {
    ob_start();

    do_action('vnm_before_email_field');

    echo $field;

    do_action('vnm_after_email_field');

    return ob_get_clean();
}

add_filter('woocommerce_form_field_email', 'vnm_mc_after_email_field', 10, 4);

由于 WordPress 过滤器始终必须返回发送给它的第一个参数的版本(在本例中为

$field
),因此我们所做的就是打开输出缓冲区,在字段之前和之后添加我们自己的操作 (
vnm_before_email_field
vnm_after_email_field
),然后返回输出缓冲区。

然后,在WooCommerce->MailChimp->Audience下的MailChimp插件设置中,只需添加您刚刚为您的字段创建的挂钩:

MailChimp plugin settings: opt-in checkbox position, with the new vnm_before_email_field action entered

...并且完成。请注意,如果您愿意,您实际上可以在 every WooCommerce 结帐字段周围添加操作挂钩,只需添加以下内容(未经测试):

///
//  Add `before` & `after` actions around every WooCommerce checkout field
///

function vnm_wc_form_field_actions($field, $key, $args, $value) {
    ob_start();

    do_action('vnm_before_' . $args['type'] . '_field');

    echo $field;

    do_action('vnm_after_' . $args['type'] . '_field');

    return ob_get_clean();
}

add_filter('woocommerce_form_field', 'vnm_wc_form_field_actions', 10, 4);
© www.soinside.com 2019 - 2024. All rights reserved.