Эта строка неверна, поэтому ваш метабокс имеет значение «включено» или «выключено».
$spanish = isset($_POST['spanish_subtitle_field']) ? 'on' : 'off';
И когда вы проверяете, отмечен ли флажок, вы ищете значение «да».
if($spanish_subtitle_field == "yes") {$spanish_subtitle_checked = 'checked="checked"';} else {$spanish_subtitle_checked = '';}
Итак, попробуйте эту новую функцию и проверьте, работает ли:
function save_film_meta_data($post_id){
if(! isset($_POST['spanish_meta_box_nonce'])){
return;
}
if(!wp_verify_nonce($_POST['spanish_meta_box_nonce'],'save_film_meta_data')){
return;
}
if( defined('DOING_AUTOSAVE') && DOING_AUTOSAVE){
return;
}
if(! current_user_can('edit_post',$post_id)){
return;
}
if( ! isset($_POST['spanish_subtitle_field'])){
return;
}
$my_data = isset($_POST['spanish_subtitle_field']) ? $_POST['spanish_subtitle_field'] : 'no';
update_post_meta($post_id,'_spanish_value_key',$my_data);
}