将 Json 值存储在 add_post_meta 中

use*_*619 4 php variables wordpress json

如何将此 Json 值存储在 add_post_meta 中

  $offer_name= $item['data'][$i]['Offer']['name'];

  add_post_meta($post_id, 'offer_name', $offer_name);
Run Code Online (Sandbox Code Playgroud)

$offer_name 的 json 值不会被存储,但会存储普通字符串。

更新1:这就是我测试的方式。

case 1 // 使用 json 时,值不会被存储..

 $offer_name= $item['data'][$i]['Offer']['name']; 

echo $offer_name; // the value gets echoed .

 add_post_meta($post_id, 'offer_name', $offer_name); // the value of $offer_name doesn't  get stored 
Run Code Online (Sandbox Code Playgroud)

case 2 // 没有 json 值就被存储..

  $offer_name="My  Name"; 

 add_post_meta($post_id, 'offer_name', $offer_name); // the value of $offer_name does get stored 
Run Code Online (Sandbox Code Playgroud)

更新 2:如果我将 json 数据存储在“{ }”中,那么该值将存储在 WordPress 中

$offer_name ="{$item['data'][$i]['Offer']['name']}";


add_post_meta($post_id, 'offer_name', $offer_name);
Run Code Online (Sandbox Code Playgroud)

提前致谢

Yat*_*tes 11

您需要使用json_encode()。这将返回一个 JSON 格式的字符串,您可以使用它保存在数据库中。

\n\n

请注意,对于 \xc3\xab、\xc3\xa2、\xc3\x86 等字符,在尝试将其保存到数据库之前,应在 JSON 编码字符串上使用addslashes() 。这样,一旦解码 JSON 字符串,这些特殊字符就可以正确看到。

\n\n

(是的,这很旧了,但我自己正在寻找一些东西,并想为什么不呢?)

\n

  • 请注意,在 postmeta 中用于 JSON 或类似数据的推荐函数是“wp_slash()”。https://developer.wordpress.org/plugins/metadata/managing-post-metadata/#character-escaping (3认同)