Woocommerce 变量订阅自定义字段复选框将默认设置为未选中

Woocommerce variable subscription custom field checkbox set default as unchecked

下面是我的代码,我在其中为我的 变量订阅 设置了一个名为 mindesk_analytics_opt_out 的自定义字段,它按照我的预期工作正常。

但是,每当我创建一个新变体并打开面板时,我的默认复选框总是设置为 checked。我不明白我的代码哪里做错了。

有人可以指导我犯了一个小错误吗?这是我的工作代码。

<?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) {

    $mindesk_analytics_opt_out = get_post_meta($variation->ID, 'mindesk_analytics_opt_out', true);
    echo '<strong>Mindesk e-Commerce</strong>';

    woocommerce_wp_checkbox(
        array(
            'id'            => "mindesk_analytics_opt_out{$loop}",
            'name'          => "mindesk_analytics_opt_out[{$loop}]",
            'wrapper_class' => 'show_if_simple',
            'label'         => __('&nbsp; Analytics', 'woocommerce'),
            'value'         => !empty($mindesk_analytics_opt_out) ? 'yes' : $mindesk_analytics_opt_out,
            'cbvalue'       => $mindesk_analytics_opt_out,

        )
    );
}
function save_WC_Product_Variable_Subscription_Variation_Custom_Fields($variation_id, $loop) {

    $mindesk_analytics_opt_out = isset($_POST['mindesk_analytics_opt_out'][$loop]) ? 'yes' : 'no';
    update_post_meta($variation_id, 'mindesk_analytics_opt_out', esc_attr($mindesk_analytics_opt_out));
}

如有任何意见或建议,我们将不胜感激。

已更新: 而是使用以下函数替换 (默认情况下未选中复选框)

// Add custom field checkbox for variable subscriptions 
add_action('woocommerce_product_after_variable_attributes', 'show_WC_Product_Variable_Subscription_Variation_Custom_Fields', 10, 3);
function show_WC_Product_Variable_Subscription_Variation_Custom_Fields($loop, $variation_data, $variation) {
    echo '<strong>' . __("Mindesk e-Commerce", 'woocommerce') . '</strong>';

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

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

已测试并有效


这部分不需要修改:

// Saving fields for variable subscriptions 
add_action('woocommerce_save_product_variation', 'save_WC_Product_Variable_Subscription_Variation_Custom_Fields', 10, 2);
function save_WC_Product_Variable_Subscription_Variation_Custom_Fields($variation_id, $loop) 
{
    $value = isset($_POST['mindesk_analytics_opt_out'][$loop]) ? 'yes' : 'no';
    update_post_meta( $variation_id, 'mindesk_analytics_opt_out', esc_attr($value) );
}