【问题标题】:WooCommerce admin product custom checkbox field not saving valueWooCommerce 管理员产品自定义复选框字段不保存价值
【发布时间】:2021-07-15 08:38:14
【问题描述】:

我在产品选项上创建了自定义复选框,但在保存数据时卡住了。 我尝试了所有可能的变体,但没有成功。 我哪里错了? 谢谢

这是代码:

add_action( 'woocommerce_product_options_sku', 'custom_checkbox_field' );
function custom_checkbox_field(){
    global $post, $product_object;

    if ( ! is_a( $product_object, 'WC_Product' ) ) {
            $product_object = wc_get_product( $post->ID );
    }
      
            
    woocommerce_wp_checkbox(
    array(
        'id'            => 'custom_checkbox_field',
        'value'         => empty($values) ? 'yes' : $values,
        'label'         => __( 'Label', 'woocommerce' ),
        'description'   => __( 'Description', 'woocommerce' ),
        )
    );
    
}

add_action( 'woocommerce_process_product_meta', 'save_custom_field' );  
    function save_custom_field( $post_id ) {
    

     // grab the product
     $product = wc_get_product( $post_id );

      // save data
      $product->update_meta_data( 'custom_checkbox_field', isset($_POST['custom_checkbox_field']) ? 'yes' : 'no' ); 
      $product->save();
    }

【问题讨论】:

    标签: php wordpress checkbox woocommerce custom-fields


    【解决方案1】:

    您的代码中缺少一些东西,并且您的最后一个挂钩函数挂钩可以替换为自 WooCommerce 版本 3 以来更好的挂钩。请尝试以下操作:

    add_action( 'woocommerce_product_options_sku', 'custom_checkbox_field_product_options_sku' );
    function custom_checkbox_field_product_options_sku(){
        global $post, $product_object;
    
        if ( ! is_a( $product_object, 'WC_Product' ) ) {
            $product_object = wc_get_product( $post->ID );
        }
    
        $values = $product_object->get_meta('custom_checkbox_field');
    
        woocommerce_wp_checkbox( array(
            'id'            => 'custom_checkbox_field',
            'value'         => empty($values) ? 'yes' : $values, // Checked by default
            'label'         => __( 'Label', 'woocommerce' ),
            'description'   => __( 'Description', 'woocommerce' ),
        ) );
    }
    
    add_action( 'woocommerce_admin_process_product_object', 'save_custom_field_product_options_sku' );
    function save_custom_field_product_options_sku( $product ) {
        $product->update_meta_data( 'custom_checkbox_field', isset($_POST['custom_checkbox_field']) ? 'yes' : 'no' );
    }
    

    代码进入活动子主题(或活动主题)的functions.php 文件中。经过测试并且可以工作。

    【讨论】:

    • 谢谢@loictheaztec,现在工作我可以在 Woo 文件中看到哪里,保存代码,创建字段和元框?再次感谢
    • @ВладимирКятипов 要获取产品自定义字段值,您可以使用产品 ID get_post_meta( $product_id, 'custom_checkbox_field', true ); 或产品对象 $product->get_meta('custom_checkbox_field');
    猜你喜欢
    • 1970-01-01
    • 2018-02-07
    • 2017-09-27
    • 2019-02-28
    • 2021-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-05
    相关资源
    最近更新 更多