RWMB_Field::save PHP Method

save() public static method

Save meta value
public static save ( $new, $old, $post_id, $field )
$new
$old
$post_id
$field
	public static function save( $new, $old, $post_id, $field ) {
		$name = $field['id'];

		// Remove post meta if it's empty
		if ( '' === $new || array() === $new ) {
			delete_post_meta( $post_id, $name );
			return;
		}

		// If field is cloneable, value is saved as a single entry in the database
		if ( $field['clone'] ) {
			// Remove empty values
			$new = (array) $new;
			foreach ( $new as $k => $v ) {
				if ( '' === $v || array() === $v ) {
					unset( $new[ $k ] );
				}
			}
			// Reset indexes
			$new = array_values( $new );
			update_post_meta( $post_id, $name, $new );
			return;
		}

		// If field is multiple, value is saved as multiple entries in the database (WordPress behaviour)
		if ( $field['multiple'] ) {
			$new_values = array_diff( $new, $old );
			foreach ( $new_values as $new_value ) {
				add_post_meta( $post_id, $name, $new_value, false );
			}
			$old_values = array_diff( $old, $new );
			foreach ( $old_values as $old_value ) {
				delete_post_meta( $post_id, $name, $old_value );
			}
			return;
		}

		// Default: just update post meta
		update_post_meta( $post_id, $name, $new );
	}

Usage Example

Exemplo n.º 1
0
 /**
  * Save meta value
  * If field is cloneable, value is saved as a single entry in DB
  * Otherwise value is saved as multiple entries (for backward compatibility)
  *
  * TODO: A good way to ALWAYS save values in single entry in DB, while maintaining backward compatibility
  *
  * @param $new
  * @param $old
  * @param $post_id
  * @param $field
  */
 static function save($new, $old, $post_id, $field)
 {
     if (!$field['clone']) {
         parent::save($new, $old, $post_id, $field);
         return;
     }
     if (empty($new)) {
         delete_post_meta($post_id, $field['id']);
     } else {
         update_post_meta($post_id, $field['id'], $new);
     }
 }
All Usage Examples Of RWMB_Field::save