変更したい関数にループがあります:
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」がキーである場合は、何かをして中断します。ここで、上記のようにするためのキーをもう1つ追加します。そこで、次のように変更しました。
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入力ボックスが期待どおりに出力されません。ループのどこで失敗しましたか?