2014-09-10 47 views
0

我在保存WordPress的自定义帖子类型的编码有问题。当我点击更新时,UTF-8字符(č,š,ž,ø等)被转换为“u010d”等。WordPress的自定义帖子类型编码

该问题似乎与形式。我通过POST收到已损坏的字符。

我已经保存了UTF-8编码的文件,并且在HTML的HEAD中有用于编码的元标记。

我能做些什么来解决这个问题?

谢谢!

编辑:

我在形式accept-charset="UTF-8"

HEAD:<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

功能:

add_action('save_post', 'layered_images_save_info'); 

function layered_images_save_info($post_id) { 

// verify nonce 

if (! wp_verify_nonce($_POST['layered_images_box_nonce'], basename(__FILE__))) { 

    return $post_id; 

} 

// check autosave 

if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) { 

    return $post_id; 

} 
// check permissions 

if ('layered_images' == $_POST[ 'post_type'] && current_user_can('edit_post', $post_id)) { 

    /* Save Slider Images */ 

    //echo "";print_r($_POST['gallery_img']);exit; 
    //$bla = html_entity_decode($_POST[ 'layer_titles' ], ENT_QUOTES, "utf-8"); 
    $gallery_images = (isset($_POST[ 'gallery_img' ]) ? $_POST[ 'gallery_img' ] : ''); 
    $layer_opacity = (isset($_POST[ 'layer_opacity' ]) ? $_POST[ 'layer_opacity' ] : ''); 
    $layer_color = (isset($_POST[ 'layer_color' ]) ? $_POST[ 'layer_color' ] : ''); 
    //print_r($bla);exit; 
    $gallery_images = strip_tags(json_encode($gallery_images)); 

    $visible_layers = (isset($_POST[ 'visible_layers' ]) ? $_POST[ 'visible_layers' ] : ''); 
    $visible_layers = strip_tags(json_encode($visible_layers)); 

    $visible_user_layers = (isset($_POST[ 'visible_user_layers' ]) ? $_POST[ 'visible_user_layers' ] : ''); 
    $visible_user_layers = strip_tags(json_encode($visible_user_layers)); 

    $layer_titles = (isset($_POST[ 'layer_titles' ]) ? $_POST[ 'layer_titles' ] : ''); 
    $layer_titles = json_encode($layer_titles) ; 

    update_post_meta($post_id, "_layer_gallery_images", $gallery_images); 
    update_post_meta($post_id, "_layer_visible_layers", $visible_layers); 
    update_post_meta($post_id, "_visible_user_layers", $visible_user_layers); 
    update_post_meta($post_id, "_layer_titles", $layer_titles); 
    update_post_meta($post_id, "_layer_opacity", $layer_opacity); 
    update_post_meta($post_id, "_layer_color", $layer_color); 


} else { 

    return $post_id; 

} 

}

+0

您可以尝试指定表单的字符集:'

'。如果这不会改变任何内容,请在您声明编码的HTML标题以及处理接收到的表单数据的地方发布。 – MSTannu 2014-09-10 19:38:08

+0

更新:问题只出现在与php循环列出的字段中,来自postmeta字段的数据。并在与jQuery动态添加的字段。这个字段的名字是这样的:'layer_titles []'。 @MSTannu我更新了我的问题。请检查。 – 2014-09-11 05:36:56

回答

相关问题