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

标签 php woocommerce hook-woocommerce custom-fields woocommerce-subscriptions

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

但是,每当我创建新变体并打开面板时,我的默认复选框始终设置为已选中。我无法理解我的代码中哪里做错了。

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

<?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) );
}

关于php - Woocommerce 变量订阅自定义字段复选框设置默认为未选中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66022677/

相关文章:

php mail ()/r/n 和 <br> 没有效果

php - 查询未获取所有结果

php - 过滤 MySQL 逗号分隔字段

wordpress - Woocommerce Admin 按库存/缺货过滤

php - 限制 Woocommerce 中的产品简短描述长度

php - mysqli_fetch_assoc()需要参数/调用成员函数bind_param()错误。如何获取并修复实际的mysql错误?

php - 页面上的 Woocommerce 客户列表

wordpress - Woocommerce - 在订单上以编程方式更改税级并重新计算

wordpress - woocommerce 在前端按库存和缺货对产品进行排序

reactjs - 错误 : getaddrinfo ENOTFOUND calling WooCommerce REST API