问题描述
下面是我的代码,我在其中为我的变量订阅设置了一个名为 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',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,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',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,esc_attr($value) );
}