php - 在 Woocommerce 后端产品编辑页面中将复选框添加到产品类型选项

标签 php wordpress woocommerce backend product

我在 Woocommerce 管理产品数据设置中添加了一个自定义选项复选框。如果我启用该复选框并保存更改,该值将正确保存在产品元数据中,但该复选框永远不会保持选中状态

我做错了什么?如何使它作为其他选项复选框工作?

我的代码:

function add_e_visa_product_option( $product_type_options ) {
    $product_type_options[''] = array(
        'id'            => '_evisa',
        'wrapper_class' => 'show_if_simple show_if_variable',
        'label'         => __( 'eVisa', 'woocommerce' ),
        'description'   => __( '', 'woocommerce' ),
        'default'       => 'no'
    );
    return $product_type_options;
}
add_filter( 'product_type_options', 'add_e_visa_product_option' );

function save_evisa_option_fields( $post_id ) {
  $is_e_visa = isset( $_POST['_evisa'] ) ? 'yes' : 'no';
    update_post_meta( $post_id, '_evisa', $is_e_visa );
}
add_action( 'woocommerce_process_product_meta_simple', 'save_evisa_option_fields'  );
add_action( 'woocommerce_process_product_meta_variable', 'save_evisa_option_fields'  );

最佳答案

答案很简单......你只是忘了在第一个函数中为你的数组添加一个键id,比如:

$product_type_options['evisa'] = array( // … …

所以在你的代码中:

add_filter( 'product_type_options', 'add_e_visa_product_option' );
function add_e_visa_product_option( $product_type_options ) {
    $product_type_options['evisa'] = array(
        'id'            => '_evisa',
        'wrapper_class' => 'show_if_simple show_if_variable',
        'label'         => __( 'eVisa', 'woocommerce' ),
        'description'   => __( '', 'woocommerce' ),
        'default'       => 'no'
    );

    return $product_type_options;
}

add_action( 'woocommerce_process_product_meta_simple', 'save_evisa_option_fields'  );
add_action( 'woocommerce_process_product_meta_variable', 'save_evisa_option_fields'  );
function save_evisa_option_fields( $post_id ) {
    $is_e_visa = isset( $_POST['_evisa'] ) ? 'yes' : 'no';
    update_post_meta( $post_id, '_evisa', $is_e_visa );
}

代码进入事件子主题(或事件主题)的 function.php 文件。经过测试并有效。

enter image description here

关于php - 在 Woocommerce 后端产品编辑页面中将复选框添加到产品类型选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50043644/

相关文章:

php - 将 javascript 调用转换为 php 的最有效方法(与 Wordpress 无限滚动/社交按钮问题相关)

jquery - 未捕获的 TypeError : $(. ..).accordion 不是 wordpress 中的函数

javascript - 在 php 文件中执行 Google Chart API (Javascript)

php - WooCommerce 自定义变体下拉列表

php - mysql数据库使用已经在html/php中输入的数据制作下拉菜单

php - while 循环内有多个单选按钮

php - 如何在woocommerce中获取当前用户的所有订单

wordpress - 如何通过以访客身份将产品添加到购物车并在结账时登录来避免在 WooCommerce 中再次购买相同的产品

php - 通过类别选择产品,woocommerce

php - 计算 PHP 字符串中特定字符的所有出现次数的最有效方法是什么?