下面是我的代码,我在其中为我的变量订阅设置了一个名为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' => __(' 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' => __(' 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/