我想要修改的函数中有一个循环:
foreach ( $form_fields as $key => $val ) {
if ( 'menu_order' == $key ) {
if ( $gallery )
$order = "<div class='menu_order'> <input class='menu_order_input' type='text' id='attachments[$attachment_id][menu_order]' name='attachments[$attachment_id][menu_order]' value='" . esc_attr( $val['value'] ). "' /></div>";
else
$order = "<input type='hidden' name='attachments[$attachment_id][menu_order]' value='" . esc_attr( $val['value'] ) . "' />";
unset( $form_fields['menu_order'] );
break;
}
}
这个循环遍历$ form_fields数组。如果“menu_order”是关键,那么,做一些事情并打破。现在我想再添加一个键来执行上述操作。所以,我把它修改如下:
foreach ( $form_fields as $key => $val ) {
if ( 'menu_order' == $key ) {
if ( $gallery )
$order = "<div class='menu_order'> <input class='menu_order_input' type='text' id='attachments[$attachment_id][menu_order]' name='attachments[$attachment_id][menu_order]' value='" . esc_attr( $val['value'] ). "' /></div>";
else
$order = "<input type='hidden' name='attachments[$attachment_id][menu_order]' value='" . esc_attr( $val['value'] ) . "' />";
unset( $form_fields['menu_order'] );
}
if ( 'post_status' == $key ) {
if ( $gallery )
$status = "<div class='post_status'> <input class='post_status_input' type='text' id='attachments[$attachment_id][post_status]' name='attachments[$attachment_id][post_status]' value='" . esc_attr( $val['value'] ). "' /></div>";
else
$status = "<input type='hidden' name='attachments[$attachment_id][post_status]' value='" . esc_attr( $val['value'] ) . "' />";
unset( $form_fields['post_status'] );
break;
}
}
请注意,我删除了原始代码中的中断,在循环结束时添加了中断。我认为这应该使循环继续,直到它完成我新添加的块。 但是此代码不会按预期打印post_status输入框。我在哪里出错了?
答案 0 :(得分:2)
这是一个简单的修复:摆脱循环。由于您知道密钥,因此您不需要它,只需执行此操作即可直接访问数组元素:
if ( $gallery )
$order = "<div class='menu_order'> <input class='menu_order_input' type='text' id='attachments[$attachment_id][menu_order]' name='attachments[$attachment_id][menu_order]' value='" . esc_attr( $form_fields['menu_order']['value'] ). "' /></div>";
else
$order = "<input type='hidden' name='attachments[$attachment_id][menu_order]' value='" . esc_attr( $form_fields['menu_order']['value'] ) . "' />";
unset( $form_fields['menu_order']);
对'post_status'
字段执行相同的操作。
答案 1 :(得分:1)
看起来你想在找到$order
和$status
后打破循环。如果是这样,您希望在两种情况之后都有一个额外的if语句来检查并确保$order
和$status
都已设置,并且只有在这种情况下才会中断。
类似的东西:
if (isset($order) && isset($status)) {
break;
}
也就是说,检查功能。它可能只检查$order
的值,并忽略$status
的值。