德语特殊字符在 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

iconvDocs

例如,如果您运行以下代码:

$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 架构中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

jQuery 就绪功能在 WordPress 中不起作用

画布元素在 WordPress 中不起作用

jQuery 悬停在 WordPress 中不起作用

jQuery 验证插件在 WordPress 中不起作用

style.css 在 wordpress 中不起作用

分页功能在 WordPress 中不起作用