在WooCommerce订阅页面、后台及邮件中显示高级自定义字段
Solution: Add Custom Field to WooCommerce Subscriptions (Admin, Frontend, Emails)
Below is a complete implementation to add a custom field for WooCommerce Subscriptions that meets your requirements:
1. Add & Save Custom Field in Subscription Admin Edit Page
This adds a textarea field to the subscription edit screen in WordPress admin and saves its value when the subscription is updated.
// Add custom field to subscription admin edit page add_action( 'woocommerce_subscription_after_order_details', 'add_subscription_custom_field_admin', 10, 1 ); function add_subscription_custom_field_admin( $subscription ) { ?> <div class="options_group"> <p class="form-field"> <label for="subscription_custom_note"><?php esc_html_e( 'Subscription Notes', 'woocommerce' ); ?></label> <textarea id="subscription_custom_note" name="subscription_custom_note" rows="3" cols="50"><?php echo esc_textarea( $subscription->get_meta( '_subscription_custom_note', true ) ); ?></textarea> <span class="description"><?php esc_html_e( 'Add custom notes for this subscription.', 'woocommerce' ); ?></span> </p> </div> <?php } // Save custom field value from admin subscription edit page add_action( 'woocommerce_save_post_subscription', 'save_subscription_custom_field_admin', 10, 2 ); function save_subscription_custom_field_admin( $subscription_id, $subscription ) { if ( isset( $_POST['subscription_custom_note'] ) ) { $subscription->update_meta_data( '_subscription_custom_note', sanitize_textarea_field( $_POST['subscription_custom_note'] ) ); $subscription->save(); } }
2. Display Custom Field on Customer's My Account Subscriptions Page
Shows the custom field value to customers in their account's subscriptions section.
// Display custom field on customer's my account subscriptions page add_action( 'woocommerce_subscription_details_after_subscription_table', 'display_subscription_custom_field_frontend', 10, 1 ); function display_subscription_custom_field_frontend( $subscription ) { $custom_note = $subscription->get_meta( '_subscription_custom_note', true ); if ( ! empty( $custom_note ) ) { ?> <div class="subscription-custom-note"> <h3><?php esc_html_e( 'Subscription Notes', 'woocommerce' ); ?></h3> <p><?php echo esc_html( $custom_note ); ?></p> </div> <?php } }
3. Include Custom Field in Subscription Email Notifications
Adds the custom field value to all relevant WooCommerce subscription email notifications (both plain text and HTML formats).
// Include custom field in subscription email notifications add_action( 'woocommerce_email_order_meta', 'add_subscription_custom_field_to_emails', 10, 4 ); function add_subscription_custom_field_to_emails( $order, $sent_to_admin, $plain_text, $email ) { // Check if the order is a subscription if ( function_exists( 'wcs_is_subscription' ) && wcs_is_subscription( $order ) ) { $custom_note = $order->get_meta( '_subscription_custom_note', true ); if ( ! empty( $custom_note ) ) { if ( $plain_text ) { echo "\n" . esc_html__( 'Subscription Notes:', 'woocommerce' ) . "\n" . esc_html( $custom_note ) . "\n"; } else { echo '<h3>' . esc_html__( 'Subscription Notes', 'woocommerce' ) . '</h3>'; echo '<p>' . esc_html( $custom_note ) . '</p>'; } } } }
Usage Notes:
- Replace
_subscription_custom_notewith your preferred meta key (keep the underscore prefix for hidden meta). - Adjust labels like "Subscription Notes" to match your field's purpose.
- Add this code to your child theme's
functions.phpfile or a custom plugin (never edit core WooCommerce files).
内容的提问来源于stack exchange,提问作者user3707509
相关产品推荐
相关产品推荐

