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