WooCommerce 将管理员自定义字段添加到简单订阅

WooCommerce add admin custom field(s) to simple subscriptions

在 WooCommerce 中,我启用了 WooCommerce Subscriptions 插件,它按照我的预期运行良好。

但是,我有一个来自客户的定制要求。我想在 Variable SubscriptionsSimple Subscriptions.

中创建产品时添加自定义字段

我使用以下代码在 变量订阅 中添加了自定义字段,它按照我的预期工作。这是我的代码。

<?php

// Showing fields for variable subscriptions 
add_action('woocommerce_product_after_variable_attributes', 'show_WC_Product_Variable_Subscription_Variation_Custom_Fields', 10, 3);

// Saving fields for variable subscriptions 
add_action('woocommerce_save_product_variation', 'save_WC_Product_Variable_Subscription_Variation_Custom_Fields', 10, 2);
    
function show_WC_Product_Variable_Subscription_Variation_Custom_Fields($loop, $variation_data, $variation) {
    woocommerce_wp_text_input(
        array(
            'id'            => "my_text_field{$loop}",
            'name'          => "my_text_field[{$loop}]",
            'value'         => get_post_meta($variation->ID, 'my_text_field', true),
            'label'         => __('Some label', 'woocommerce'),

        )
    );
}

function save_WC_Product_Variable_Subscription_Variation_Custom_Fields($variation_id, $loop) {

    if (empty($variation_id)) return;

    $text_field = $_POST['my_text_field'][$loop];
    update_post_meta($variation_id, 'my_text_field', esc_attr($text_field));
}

这是它现在工作正常的样子。

如您在上面的屏幕截图中所见,最后一个标记为“某些标签”的字段.. 添加了我的自定义字段。

但是,我想添加我设置的相同字段 简单订阅。我是说。

如您所见,我希望在此处显示和保存相同的自定义字段..

我已经研究过,但还没有找到任何钩子。

有人可以指导我如何实现这一点。

更新:

将自定义字段添加到管理产品数据 设置 > 常规 选项卡 简单订阅:

// Showing custom fields on admin product settings "general" tab
add_action('woocommerce_product_options_general_product_data', 'add_admin_product_custom_fields', 10, 3);
function add_admin_product_custom_fields() {
    global $post;
    
    echo '<div class="product_custom_field show_if_simple show_if_subscription">';
    
    woocommerce_wp_text_input( array(
        'id'            => 'my_text_field',
        'name'          => 'my_text_field',
        'label'         => __('Some label', 'woocommerce'),
    ) );
    
    echo '</div>';
}

// Saving custom fields values from admin product settings
add_action('woocommerce_admin_process_product_object', 'save_admin_product_custom_fields_values');
function save_admin_product_custom_fields_values( $product ) {
    if ( isset($_POST['my_text_field']) ) {
        $product->update_meta_data( 'my_text_field', sanitize_text_field($_POST['my_text_field']) );
    }
}

代码进入活动子主题(或活动主题)的 functions.php 文件。已测试并有效。


要在简单和可变的订阅更改中显示它:

echo '<div class="product_custom_field show_if_simple show_if_subscription">';

与:

echo '<div class="product_custom_field">';

复选框字段的添加:

// Showing custom fields on admin product settings "general" tab
add_action('woocommerce_product_options_general_product_data', 'add_admin_product_custom_checkbox_fields', 10, 3);
function add_admin_product_custom_checkbox_fields() {
    global $post;

    echo '<div class="product_custom_field show_if_simple show_if_subscription">';

    echo '<p><strong>' . __("Mindesk e-Commerce", 'woocommerce') . '</strong></p>';

    $value = get_post_meta($post->ID, 'mindesk_analytics_opt_out', true);

    woocommerce_wp_checkbox(array(
        'id'            => "mindesk_analytics_opt_out",
        'name'          => "mindesk_analytics_opt_out",
        'wrapper_class' => 'show_if_simple',
        'label'         => __('&nbsp; Analytics', 'woocommerce'),
        'value'         => $value,
    ) );

    echo '</div>';
}

// Saving custom fields values from admin product settings
add_action('woocommerce_admin_process_product_object', 'save_admin_product_custom_checkbox_fields_values');
function save_admin_product_custom_checkbox_fields_values( $product ) {
    $value = isset($_POST['mindesk_analytics_opt_out']) ? 'yes' : 'no';
    $product->update_meta_data('mindesk_analytics_opt_out', esc_attr($value) );
}

代码进入活动子主题(或活动主题)的 functions.php 文件。已测试并有效。