问题描述
所以我的情况有点糟糕。 目前,我正在为一家丹麦 Woocommerce 网上商店提供支持,但我们遇到了一个特殊的问题。
当产品显示在单一产品网站上时会出现问题,具体而言,属于产品图片的“title
”将丹麦语特殊字符 æ ø å 分解为 æ ø Ã¥
。网站、数据库和服务器上的每个字符集设置都设置为 UTF-8
,但实例化产品图像的函数似乎不支持多字节字符。
据我所知,这是有问题的函数:
function wc_get_gallery_image_html( $attachment_id,$main_image = false ) {
$flexslider = (bool) apply_filters( 'woocommerce_single_product_flexslider_enabled',get_theme_support( 'wc-product-gallery-slider' ) );
$gallery_thumbnail = wc_get_image_size( 'gallery_thumbnail' );
$thumbnail_size = apply_filters( 'woocommerce_gallery_thumbnail_size',array( $gallery_thumbnail['width'],$gallery_thumbnail['height'] ) );
$image_size = apply_filters( 'woocommerce_gallery_image_size',$flexslider || $main_image ? 'woocommerce_single' : $thumbnail_size );
$full_size = apply_filters( 'woocommerce_gallery_full_size',apply_filters( 'woocommerce_product_thumbnails_large_size','full' ) );
$thumbnail_src = wp_get_attachment_image_src( $attachment_id,$thumbnail_size );
$full_src = wp_get_attachment_image_src( $attachment_id,$full_size );
$alt_text = trim( wp_strip_all_tags( get_post_meta( $attachment_id,'_wp_attachment_image_alt',true ) ) );
$image = wp_get_attachment_image(
$attachment_id,$image_size,false,apply_filters(
'woocommerce_gallery_image_html_attachment_image_params',array(
'title' => _wp_specialchars( get_post_field( 'post_title',$attachment_id ),ENT_QUOTES,'UTF-8',true ),'data-caption' => _wp_specialchars( get_post_field( 'post_excerpt','data-src' => esc_url( $full_src[0] ),'data-large_image' => esc_url( $full_src[0] ),'data-large_image_width' => esc_attr( $full_src[1] ),'data-large_image_height' => esc_attr( $full_src[2] ),'class' => esc_attr( $main_image ? 'wp-post-image' : '' ),),$attachment_id,$main_image
)
);
return '<div data-thumb="' . esc_url( $thumbnail_src[0] ) . '" data-thumb-alt="' . esc_attr( $alt_text ) . '" class="woocommerce-product-gallery__image"><a href="' . esc_url( $full_src[0] ) . '">' . $image . '</a></div>';
}
在我看来,apply_filters()
函数之一会破坏在数组中找到的字符串,特别是“title
”和“data-caption
”。
现在,我对网站进行了临时修复,在数据库中进行了简单的搜索和替换,将每个 æ、ø 和 å 替换为相应的 HTML 代码:å
等。
但从长远来看,当新产品添加到数据库时,这并不能改变问题。
从我发现的情况来看,这不是一个常见问题,但希望比我更聪明的人会提供潜在的解决方案。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)