woocommerce产品数据元框中的Cutsom复选框字段

woocommerce产品数据元框中的Cutsom复选框字段,woocommerce,Woocommerce,我在Woocommerce产品页面中添加了一个复选框。当我选中并保存该框时,该框中确实有复选标记,并将“是”添加到字段中。但是,当我尝试取消选中复选框时,它不会删除复选标记,字段保持为“是”。在某些情况下,情况正好相反,我可以删除复选标记,但当我再次尝试选中复选框时,它不会选中。它似乎没有更新 function wdc_add_checkbox_to_products() { global $woocommerce, $post; $term = 'cheque'; //

我在Woocommerce产品页面中添加了一个复选框。当我选中并保存该框时,该框中确实有复选标记,并将“是”添加到字段中。但是,当我尝试取消选中复选框时,它不会删除复选标记,字段保持为“是”。在某些情况下,情况正好相反,我可以删除复选标记,但当我再次尝试选中复选框时,它不会选中。它似乎没有更新

  
function wdc_add_checkbox_to_products() {
    global $woocommerce, $post;
    $term = 'cheque'; // Product category term slug
               
    if ( (has_term( $term, 'product_cat' ) )){   
        woocommerce_wp_checkbox( array( 
        'id' => 'wdc_checkbox',
        'label' => 'Include in List',
        'wrapper_class' => ''
    ) );
    echo '<input type="hidden" name="wdc_checkbox_nonce" value="' . wp_create_nonce() . '">';  
   
    }
}

add_action( 'save_post_product', 'wdc_save_checkbox_textbox_to_post_meta', 20, 1 );
  
function wdc_save_checkbox_textbox_to_post_meta( $post_id ) {
    if ( ! isset( $_POST[ 'wdc_checkbox_nonce' ] ) ) {
        return $post_id;
    }
    if ( ! wp_verify_nonce( $_POST[ 'wdc_checkbox_nonce' ] ) ) {
        return $post_id;
    }
    if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) {
        return $post_id;
    }
    if ( ! current_user_can( 'edit_product', $post_id ) ) {
        return $post_id;
    }
    if ( isset( $_POST['wdc_checkbox'] ) ) {
        update_post_meta( $post_id, 'wdc_checkbox', $_POST['wdc_checkbox'] );
    }
}

功能wdc_添加_复选框_至_产品(){
全球$woocmerce,$post;
$term='check';//产品类别术语slug
如果((有_项($term,'product _cat')){
woocommerce_wp_复选框(数组(
'id'=>'wdc_复选框',
“标签”=>“包含在列表中”,
“包装器类”=>“
) );
回声';
}
}
添加操作('save_post_product'、'wdc_save_checkbox_textbox_至_post_meta',20,1);
功能wdc_保存_复选框_文本框_至_post_meta($post_id){
如果(!isset($\u POST['wdc\u复选框\u nonce'])){
返回$post_id;
}
如果(!wp\u verify\u nonce($\u POST['wdc\u checkbox\u nonce')){
返回$post_id;
}
if(已定义('DOING_AUTOSAVE')&&DOING_AUTOSAVE){
返回$post_id;
}
如果(!当前用户可以('编辑产品',$post\U id)){
返回$post_id;
}
如果(isset($\u POST['wdc\u复选框])){
更新发布元数据($post\u id,'wdc\u checkbox',$\u post['wdc\u checkbox']);
}
}

找到了答案。更改了保存功能

add_action( 'save_post_product', 'wdc_save_checkbox_textbox_to_post_meta', 20, 1 );
  
function wdc_save_checkbox_textbox_to_post_meta( $post_id ) {
        $woocommerce_wp_checkbox = isset( $_POST['wdc_checkbox'] ) ? 'yes' : 'no';
        update_post_meta( $post_id, 'wdc_checkbox', $woocommerce_wp_checkbox );

}

您的代码不完整且不可测试…请在编辑您的问题时添加完整的可测试代码。请记住,“应该更新问题,以包括所需的行为、特定的问题或错误,以及重现问题所需的最短代码”。