Easy Digital Downloads是一款非常棒而且免费的WordPress虚拟产品电子商务插件,可让您将您的网站转变为电子商务平台,以销售您的数字产品。对于大多数使用Easy Digital Downloads销售数字产品的商店,默认结账表格可以很好地处理客户的订单。但是,有时您可能需要在结帐页面上添加其他字段。本教程将向您展示如何轻松地将自定义字段添加到Easy Digital Downloads结帐页面。
注意:本教程假定您对函数和过滤器有一定的了解。新手请绕道:自定义结账页面插件。
不想自己弄乱七八糟的代码?
您可以使用条件结帐字段轻松地将自定义字段添加到Easy Digital Downloads Checkout。
下面显示的自定义代码应该复制到子主题的functions.php文件或特定于站点的插件中。
添加自定义字段到Easy Digital Downloads结账页面
我们需要做的第一件事是在结帐页面添加一个字段。 现在,字段可以有许多不同的类型,例如文本框(text boxes),单选按钮(radio buttons),复选框(checkboxes),选择菜单等。这里我只是要显示一个简单的文本框。
<?php
add_action( 'edd_purchase_form_user_info_fields' , 'sd_edd_checkout_field' );
function sd_edd_checkout_field(){
?>
<label class="edd-label" for="sd-edd-checkout-field">
<?php _e( 'My Field Title' ); ?><span class="edd-required-indicator">*</span>
</label>
<span class="edd-description">
<?php _e( 'Optional Field Label' ); ?>
</span>
<input class="edd-input" type="text" name="sd_edd_checkout_field" id="sd-edd-checkout-field" placeholder="<?php _e( 'Optional placeholder text' ); ?>" />
<?php
}
上面的代码将在结帐页面上添加一个类似于此的文本字段。
如果您在代码中注意到有必填字段指示符。 这只是在字段标题旁边添加一个星号(*)。 这是可选的,如果您不希望需要您的字段,只需删除该范围即可。
在Easy Digital Downloads中验证自定义字段
由于我们有一个必填字段,因此红色星号不能确保在客户结账时实际填写该字段。
验证Easy Digital Downloads中的字段分为两部分。 第一部在Easy Digital Downloads中添加必填字段列表,并包括在未填写字段时应显示的错误消息。第二部分是告诉Easy Digital Downloads检查我们的自定义字段以查看是否 它是否填写。
<?php
/*
* Sets our custom field to be required
* Be sure to use the same name for your field in the $required_fields array
*/
add_filter( 'edd_purchase_form_required_fields', 'sd_edd_required_field' );
function sd_edd_required_field( $required_fields ) {
$required_fields['sd_edd_checkout_field'] = array(
'error_id' => 'invalid_custom_field',
'error_message' => __( 'Please fill in the custom field' )
);
return $required_fields;
}
/*
* Sets the error if the field is empty
* Be sure to use the same name for your field in the $required_fields array
*/
add_action( 'edd_checkout_error_checks', 'sd_validate_custom_edd_checkout_field', 10, 2 );
function sd_validate_custom_edd_checkout_field( $valid_data, $data ) {
if ( empty( $data['sd_edd_checkout_field'] ) ) {
edd_set_error( 'invalid_custom_field', __( 'Please fill in the custom field' ) );
}
}
如果客户未能在Easy Digital Downloads中填写自定义字段,则会向客户显示错误消息。 这特别有用,因为如果客户不知道结账没有处理的原因,他们可能会感到沮丧并放弃他们的购物车。
自定义字段错误看起来像这样。
保存自定义字段到Easy Digital Downloads结账字段
将自定义字段添加到结帐页面非常棒,但如果我们不保存客户输入的内容,则无济于事。
Easy Digital Downloads有一个可以添加到支付元的过滤器,这是我们将在这里使用的。
<?php
add_filter( 'edd_payment_meta', 'sd_save_custom_fields');
function sd_save_custom_fields( $payment_meta ){
if( isset( $_POST['sd_edd_checkout_field'] ) ){
//You may need to use a different function to safely store your customer's entry. This example uses sanitize_text_field()
$payment_meta['sd_edd_checkout_field'] = sanitize_text_field( $_POST['sd_edd_checkout_field'] );
}
return $payment_meta;
}
所以,回顾一下,到目前为止,我们有:
剩下的唯一事情是决定如何显示自定义字段的数据。
在Easy Digital Downloads中显示自定义字段数据
我可以想到几个区域,您可能想要显示自定义字段的数据。
我将向您展示如何将数据添加到所有区域。
添加定自定义段到Easy Digital Downloads付款历史订购详情
<?php
/*
* Add custom field to order details page.
*/
function sd_add_custom_field_to_order_details( $payment_meta, $user_info ) {
$custom_field = isset( $payment_meta['sd_edd_checkout_field'] ) ? $payment_meta['sd_edd_checkout_field'] : 'none';
?>
<div class="column-container">
<div class="column">
<strong><?php _e( 'My custom field' ); ?>:</strong>
<?php echo $custom_field; ?>
</div>
</div>
<?php
}
add_action( 'edd_payment_personal_details_list', 'sd_add_custom_field_to_order_details', 10, 2 );
添加此代码将在订单详细信息页面的“客户详细信息”框底部显示自定义字段。
添加定自定义段到Easy Digital Downloads订单确认
通过将自定义字段添加到Easy Digital Downloads订单确认电子邮件,我们可以确保客户记录他们输入的内容。 此外,商店的管理员将收到一封包含相同信息的电子邮件。
<?php
/*
* Add custom field to order confirmation email
*/
function sd_display_order_details_email( $email_body, $payment_id, $payment_data ){
$payment_meta = get_post_meta( $payment_id, '_edd_payment_meta', true );
if( array_key_exists( 'sd_edd_checkout_field', $payment_meta ) ){
$email_body .= '<strong>' . __( 'My custom field ') . ': </strong>' . $payment_meta['sd_edd_checkout_field'] . '<br />';
}
return $email_body;
}
add_filter( 'edd_sale_notification', 'sd_display_order_details_email', 10, 3 );
add_action( 'plugins_loaded', 'sd_add_custom_field_to_order_email_filter' );
function sd_add_custom_field_to_order_email_filter(){
add_filter( 'edd_purchase_receipt_' . EDD()->emails->get_template(), 'sd_display_order_details_email', 10, 3 );
您可能希望在订单确认电子邮件中以不同方式设置自定义字段的样式。
您的客户会看到以下内容:
网站管理员将收到这样的电子邮件:
您将使用什么样的自定义字段?
有人想要将自定义字段添加到Easy Digital Downloads checkout有很多原因。 您将使用自定义字段进行哪些操作?
关注微信公众号themebest
- 第一时间获取主题更新动态,优惠信息
- WordPress动态、教程分享