diff --git a/custom_metadata.php b/custom_metadata.php index 3570143..83c4237 100644 --- a/custom_metadata.php +++ b/custom_metadata.php @@ -745,6 +745,15 @@ function _get_save_callback( $field ) { return $callback; return ''; } + + function _get_delete_callback( $field, $object_type ) { + $callback = isset( $field->delete_callback ) ? $field->delete_callback : ''; + + if ( ! ( $callback && is_callable( $callback ) ) ) + $callback = ''; + + return apply_filters( 'custom_metadata_manager_get_delete_callback', $callback, $field, $object_type ); + } function get_sanitize_callback( $field ) { $callback = $field->sanitize_callback; @@ -763,7 +772,7 @@ function get_display_column_callback( $field ) { function _get_field_value( $field_slug, $field, $object_type, $object_id ) { $get_value_callback = $this->_get_value_callback( $field ); - echo $get_value_callback; + if( $get_value_callback ) return call_user_func( $get_value_callback, $object_type, $object_id, $field_slug ); @@ -813,7 +822,13 @@ function _save_field_value( $field_slug, $field, $object_type, $object_id, $valu } function _delete_field_value( $field_slug, $field, $object_type, $object_id, $value = false ) { - if( ! in_array( $object_type, $this->_non_post_types ) ) + + $delete_callback = $this->_get_delete_callback( $field, $object_type ); + + if($delete_callback) + return call_user_func( $delete_callback, $object_type, $object_id, $field_slug ); + + if( ! in_array( $object_type, $this->_non_post_types ) ) $object_type = 'post'; $field_slug = sanitize_key( $field_slug ); @@ -1032,4 +1047,4 @@ function x_add_metadata_field( $slug, $object_types = 'post', $args = array() ) function x_add_metadata_group( $slug, $object_types, $args = array() ) { global $custom_metadata_manager; $custom_metadata_manager->add_metadata_group( $slug, $object_types, $args ); -} \ No newline at end of file +}