Benutzerdefiniertes Feld wird nicht aktualisiert, wenn der Wert leer ist

Ich habe dem WordPress-Bild-Uploader einige benutzerdefinierte Felder hinzugefügt, die die hooks attachment_fields_to_edit und attachment_fields_to_save . Alles funktioniert sehr gut, außer wenn ein Feld vom Benutzer gelöscht wird. Zum Beispiel, das Feld “Ölgemälde” und der Benutzer löschte es, wollte das Feld leer sein – aber das Feld sagt immer noch “Ölgemälde”. Das Ändern des Textes in etwas anderes funktioniert jedoch gut. Irgendwelche Ideen, warum das passiert? Danke im Voraus

Hier ist mein Code:

 // Add custom fields to the media uploader function wpf_fields_edit( $form_fields, $post ) { $post->post_type == 'attachment'; $form_fields[ 'wpf_g_medium' ] = array( 'label' => __( 'Medium' ), 'input' => 'text', 'value' => get_post_meta( $post->ID, '_wpf_g_medium', true ) ); $form_fields[ 'wpf_g_medium' ][ 'label' ] = __( 'Medium' ); $form_fields[ 'wpf_g_medium' ][ 'input' ] = 'text'; $form_fields[ 'wpf_g_medium' ][ 'value' ] = get_post_meta( $post->ID, '_wpf_g_medium', true ); // A couple more fields are added here, using the same code return $form_fields; } add_filter( 'attachment_fields_to_edit', 'wpf_fields_edit', NULL, 2 ); // Save the fields' data function wpf_fields_save( $post, $attachment ) { $fields = array('wpf_g_medium', 'wpf_g_dimen', 'wpf_g_collabs'); foreach( $fields as $field ) { $key = '_' . $field; if( isset( $attachment[ $field ] ) ) { if( trim( $attachment[ $field ] ) == '' ) $post[ 'errors' ][ $field ][ 'errors' ][] = __( 'Error! Something went wrong.' ); else update_post_meta( $post[ 'ID' ], $key, $attachment[ $field ] ); } } return $post; } add_filter( 'attachment_fields_to_save', 'wpf_fields_save', NULL, 2 ); // Print the values, called in attachment.php function get_artwork_fields_info() { global $post; $fields = array('wpf_g_medium', 'wpf_g_dimen', 'wpf_g_collabs'); $title = $post->post_title; if( $fields ) { echo '
  • ' . $title . '
  • '; foreach ( $fields as $field ) { $key = '_' . $field; $meta = get_post_meta( $post->ID, $key, true ); if ( $meta ) { echo '
  • '; echo $meta; echo '
  • '; } } echo '
'; } }

Solutions Collecting From Web of "Benutzerdefiniertes Feld wird nicht aktualisiert, wenn der Wert leer ist"

Sie überprüfen, ob das Feld leer ist. Versuchen Sie es zu aktualisieren, wenn es auch leer ist

  if( trim( $attachment[ $field ] ) == '' ) $post[ 'errors' ][ $field ][ 'errors' ][] = __( 'Error! Something went wrong.' ); else update_post_meta( $post[ 'ID' ], $key, $attachment[ $field ] ); 

Versuchen

 if( isset( $attachment[ $field ] ) ) { if( trim( $attachment[ $field ] ) == '' ) $post[ 'errors' ][ $field ][ 'errors' ][] = __( 'Error! Something went wrong.' ); endif; update_post_meta( $post[ 'ID' ], $key, $attachment[ $field ] ); }