德语特殊字符在 WordPress 架构中不起作用
Posted
技术标签:
【中文标题】德语特殊字符在 WordPress 架构中不起作用【英文标题】:German Special character not working in WordPress Schema 【发布时间】:2022-01-06 13:29:32 【问题描述】:我正在使用以下过滤器向我的产品添加更多 Schema 相关信息。 但是对于一些德语字符,它被转换为数字代码
add_filter( 'woocommerce_structured_data_product', 'filter__woocommerce_structured_data_product', 20, 2 );
function filter__woocommerce_structured_data_product( $schema, $product )
global $post;
$shipping_val = utf8_decode( get_post_meta( $post->ID, 'pro_shipping', true ) );
// Not working : CHF 10.–
$colour_val = utf8_decode( get_post_meta( $post->ID, 'pro_color', true ) );
// Not working : Aussen: rosa und blau (metallisch), Bordüre: grün, Innen: lila
$schema['shipping'] = array(
'@type' => 'Shipping',
'name' => $shipping_val ,
);
$schema['colour'] = array(
'@type' => 'Colour',
'name' => $colour_val ,
);
return $schema;
我添加了注释,实际数据以这种形式存储在自定义字段中。 我添加了屏幕截图,它以数字形式转换实际数据
我该如何解决这个问题?
【问题讨论】:
【参考方案1】:不确定为什么要对这些值运行 utf8_decode
函数,但可以使用 iconv
函数将它们转换回 utf8
。
因此,当您运行 utf8_decode
时,它会将您的值转换为 ISO-8859-1
字符。
utf8_decode:将带有 ISO-8859-1 字符的字符串以 UTF-8 编码转换为单字节 ISO-8859-1
我们可以在iconv
函数中使用ISO-8859-1
。
iconv
Docs
例如,如果您运行以下代码:
$german_word = "Bordüre: grün";
$utf8__decode_german_word = utf8_decode($german_word);
$utf8_german_word_main = iconv("ISO-8859-1", "utf-8//TRANSLIT//IGNORE", $utf8__decode_german_word);
echo $german_word . "<br>";
echo $utf8__decode_german_word . "<br>";
echo $utf8_german_word_main . "<br>";
哪个会输出这个:
// $german_word result
Bordüre: grün
// $utf8__decode_german_word result
Bord�re: gr�n
// $utf8_german_word_main result
Bordüre: grün
所以你的整个代码应该是这样的:
add_filter("woocommerce_structured_data_product", "filter__woocommerce_structured_data_product", 20, 2);
function filter__woocommerce_structured_data_product($schema, $product)
global $post;
$shipping_val = utf8_decode(get_post_meta($post->ID, "pro_shipping", true));
$colour_val = utf8_decode(get_post_meta($post->ID, "pro_color", true));
$schema["shipping"] = array(
"@type" => "Shipping",
"name" => iconv("ISO-8859-1", "utf-8//TRANSLIT//IGNORE", $shipping_val),
);
$schema["colour"] = array(
"@type" => "Colour",
"name" => iconv("ISO-8859-1", "utf-8//TRANSLIT//IGNORE", $colour_val),
);
return $schema;
如果你能让它工作,请告诉我。
【讨论】:
不错的解决方案... 我尝试了您的解决方案,但无法正常工作。我使用了这个功能utf8_decode
,这就是为什么在前端它显示像 ä 这样的确切字符。 ü 和 ö 但是当我 CTRL + U 来检查架构时,它会将这个字符转换为一些数字代码。
现在,我已经替换了这样的字符:ä = ae,ü = ue,ö = oe以上是关于德语特殊字符在 WordPress 架构中不起作用的主要内容,如果未能解决你的问题,请参考以下文章