我正在使用SendGrid插件,该插件允许创建新闻通讯订阅表单,该表单将发送电子邮件通知以订阅新闻通讯(https://sendgrid.com/docs/for-developers/sending-email/wordpress-subscription-widget/)。
我希望新用户注册后,他们可以选择通过注册页面(http://prntscr.com/nmq8h2)上的复选框来订阅新闻通讯。
答案 0 :(得分:2)
SendGrid插件已经不再维护了一段时间(因此看起来确实已经过时了)。
已更新:现在要在Woocommerce注册表单(以及“我的帐户”>“帐户详细信息”部分)中添加新闻订阅的复选框,您将使用以下内容:
// Remove "(optional)" label for this checkbox
add_filter( 'woocommerce_form_field' , 'remove_optional_custom_field_label', 10, 4 );
function remove_optional_custom_field_label( $field, $key, $args, $value ) {
if( 'receive_newsletter' === $key && is_wc_endpoint_url( 'edit-account' ) ) {
$optional = ' <span class="optional">(' . esc_html__( 'optional', 'woocommerce' ) . ')</span>';
$field = str_replace( $optional, '', $field );
}
return $field;
}
// Display a custom checkbox in My Account > Account details
add_action( 'woocommerce_register_form', 'add_account_newsletter_checkbox_field' );
add_action( 'woocommerce_edit_account_form', 'add_account_newsletter_checkbox_field' );
function add_account_newsletter_checkbox_field() {
woocommerce_form_field( 'receive_newsletter', array(
'type' => 'checkbox',
'class' => array('form-row-wide'),
'label' => __( 'Subscribe to our newsletter?', 'woocommerce' ),
'clear' => true,
), get_user_meta(get_current_user_id(), 'receive_newsletter', true ) );
}
// Save registration checkbox field value
add_action( 'woocommerce_created_customer', 'save_account_registration_field' );
function save_account_registration_field( $customer_id ) {
$value = isset( $_POST['receive_newsletter'] ) ? '1' : '0';
update_user_meta( $customer_id, 'receive_newsletter', $value );
}
// Save checkbox field value for My Account > Account details
add_action( 'woocommerce_save_account_details', 'save_account_details_newsletter_checkbox_field', 10, 1 );
function save_account_details_newsletter_checkbox_field( $user_id ) {
$value = isset( $_POST['receive_newsletter'] ) ? '1' : '0';
update_user_meta( $user_id, 'receive_newsletter', $value );
}
代码进入活动子主题(或活动主题)的functions.php文件中。经过测试,可以正常工作。
1)在WooCommerce注册表格上:
2)在我的帐户上>帐户详细信息(部分):
现在,由于您的插件已过时,并且由于当时StackOverFlow上的规则是一个问题,因此您将不得不处理Sendgrid Newsletter集成(因为它的范围太广了)。 >
答案 1 :(得分:0)
我真的不明白您的要求。但我确实有几件事可以为您指明正确的方向。
jQuery
应该在使用wp_enqueue_script加载的自己文件中