我在你的问题中添加了正确的缩进,这应该会使问题更加明显。
问题是你的意思是:
foreach ( $state as $state )
update_post_meta($post_id,\'state\',$state->name);
你实际上说的是:
foreach ( $state as $state );
update_post_meta($post_id,\'state\',$state->name);
扩展到:
foreach ( $state as $state ) {
// do nothing
}
//insert post meta
update_post_meta($post_id,\'state\',$state->name);
foreach循环将立即执行后面的内容。在这里,foreach后面是一个空语句。
为了防止这种情况再次发生:
正确缩进代码始终使用大括号{ }
在for/if/while/do/foreach循环/条件上,代码编辑器(如sublime text或Komodo)只需单击按钮或命令即可轻松地重新缩进代码
以下是foreach循环的外观:
foreach ( $state as $state ) {
update_post_meta($post_id,\'state\',$state->name);
}
edit
我还注意到了另一个错误,我以前真的应该注意到这个错误
$state = get_terms(\'state\', \'name\');
foreach ( $state as $state ) {
update_post_meta($post_id,\'state\',$state->name);
}
请注意,您每次都在使用state?它们不应该是一样的。相反,请执行以下操作:
$states = get_terms(\'state\', \'name\');
foreach ( $states as $state ) {
update_post_meta($post_id,\'state\',$state->name);
}
foreach州
S as状态
此外,您实际上并没有检查状态是否是您选择的状态,因此类似这样:
$states = get_the_terms(\'state\', \'name\');
if ( $states && ! is_wp_error( $states ) ){
foreach ( $states as $state ) {
if($state->name == $_POST[\'yourinputsnamehere\']){
update_post_meta($post_id,\'state\',$state->name);
break;
}
}
}