2017-11-25 13 views
0

私はWooCommerce機能を備えたWordPress Webサイトで作業しています。私のPHPコードで、WooCommerceで未確認のカスタムチェックボックスを保存できないのはなぜですか?

私はカスタムチェックボックスフィールドを作成しました。これはWooCommerceプロダクトダッシュボードに表示されます。チェックボックスを作成するには、私はfunctions.phpファイルに次のコードを入力する:チェックボックスが正常に表示されます

function woocommerce_product_custom_fields_save($post_id){ 
    if (! empty($_POST['_engrave_text_option'])) 
     update_post_meta($post_id, '_engrave_text_option', esc_attr($_POST['_engrave_text_option'])); 
} 
add_action('woocommerce_process_product_meta', 'woocommerce_product_custom_fields_save'); 

:入力された値を保存するには

function product_custom_fields_add(){ 

    global $post; 

    $input_checkbox = get_post_meta($post->ID, '_engrave_text_option', true); 
    if(empty($input_checkbox) || $input_checkbox == 'no') $input_checkbox = ''; 

    echo '<div class="product_custom_field">'; 

    woocommerce_wp_checkbox(
     array(
      'id'  => '_engrave_text_option', 
      'desc'  => __('set custom Engrave text field', 'woocommerce'), 
      'label'  => __('Display custom Engrave text field', 'woocommerce'), 
      'desc_tip' => 'true', 
      'value'  => $input_checkbox 
     ) 
    ); 
    echo '</div>'; 
} 
add_action('woocommerce_product_options_advanced', 'product_custom_fields_add'); 

、私はfunctions.phpのファイルに、次のコードを入力しますプロダクトダッシュボードでチェックボックスを選択して保存することができます。この問題は、チェックボックスのチェックを外すと表示されます。なんらかの理由で、チェックを外してからページを保存すると、チェックボックスをオンにしてページをリロードするだけです。

このバグを引き起こしている可能性のある上記のコードで何が問題なのか誰にでも確認できますか?

+0

値が空でない場合のみ更新します。チェックボックスがオフの場合、値はまったく送信されません。 – janh

答えて

0

PHP関連のものですが、POSTデータには未チェックのチェックボックスは含まれていません。 部品を保存するためのコードを調整する必要があります。

function woocommerce_product_custom_fields_save($post_id){    
      $_engrave_text_option = isset($_POST['_engrave_text_option']) ? 'yes' : 'no'; 
      update_post_meta($post_id, '_engrave_text_option', $_engrave_text_option);  
} 

add_action('woocommerce_process_product_meta', 'woocommerce_product_custom_fields_save'); 
関連する問題