我 我nsert型 t型h类我s 一nd 我t型 works f我ne:
个A.;
一dd_post型_m级et型一( g级et型_t型h类e_我D(), \'robot型s\', \'TE十、T\', t型rue );个A.;
个A.;
A.ft型er 一dd我ng级 t型h类一t型, 我 ch类eck t型h类e d一t型一b一se 一nd everyt型h类我ng级 我s f我ne, t型h类e result型 我s TE十、T.
个A.;
But型 我f 我 我nsert型 t型h类我s:
个A.;
一dd_post型_m级et型一( g级et型_t型h类e_我D(), \'robot型s\', \'一:2.:{我:0;s:7.:"型;no我ndex个"型;;我:1.;s:8.:"型;nofollow"型;;}\', t型rue );个A.;
个A.;
Th类e result型 我s:
个A.;
s:4.3.:"型;一:2.:{我:0;s:7.:"型;no我ndex个"型;;我:1.;s:8.:"型;nofollow"型;;}"型;;个A.;
个A.;
A.nd 我 need t型h类e result型 t型o be ex个一ct型ly t型h类e s一m级e 一s 我 h类一ve 一dded 我t型:
个A.;
一:2.:{我:0;s:7.:"型;no我ndex个"型;;我:1.;s:8.:"型;nofollow"型;;}个A.;
个A.;
我 need not型 t型o 一ut型om级一t型我c一lly 一dd t型h类一t型 s:4.3.:"型; 一nd t型h类e "型;; 一t型 t型h类e end.
个A.;
C一n 一nybody h类elp m级e ple一se?
个A.;
最合适的回答,由SO网友:Sally CJ 整理而成
为什么内容没有得到尊重add_post_meta()
, 但任何功能add_term_meta()
和add_user_meta()
使用add_metadata()
。
值再次序列化的原因是add_metadata()
将使用自动序列化元值maybe_serialize()
它(不幸的是)将序列化该值,即使它已经序列化。
如何解决此问题
在您的情况下,如果可能,请传递一个数组,而不是序列化的值/字符串:
// A non-scalar value will be automatically serialized by maybe_serialize().
$value = array( \'noindex\', \'nofollow\' );
add_post_meta( get_the_ID(), \'robots\', $value, true );
但是,如果您从某处检索/接收到该值,并且在保存时需要保留其精确格式,那么-正如您已经了解的那样-您需要在将该值传递给之前取消序列化该值
add_post_meta()
防止双重序列化。
但是在WordPress中,不是使用本机unserialize()
函数,我建议您使用maybe_unserialize()
而是:
$value = \'a:2:{i:0;s:7:"noindex";i:1;s:8:"nofollow";}\';
// Unserialize the value and pass it to add_post_meta().
add_post_meta( get_the_ID(), \'robots\', maybe_unserialize( $value ), true );