Automattic\WooCommerce\Internal\DataStores\Orders
OrdersTableDataStore::delete_meta
Deletes meta based on meta ID.
Method of the class: OrdersTableDataStore{}
No Hooks.
Returns
true|false.
Usage
$OrdersTableDataStore = new OrdersTableDataStore(); $OrdersTableDataStore->delete_meta( $object, $meta );
- $object(WC_Data) (required) (passed by reference — &)
- WC_Data object.
- $meta(stdClass) (required)
- (containing at least ->id).
OrdersTableDataStore::delete_meta() OrdersTableDataStore::delete meta code WC 10.7.0
public function delete_meta( &$object, $meta ) { // phpcs:ignore Universal.NamingConventions.NoReservedKeywordParameterNames.objectFound
global $wpdb;
if ( $this->should_backfill_post_record() && isset( $meta->id ) ) {
// Let's get the actual meta key before its deleted for backfilling. We cannot delete just by ID because meta IDs are different in HPOS and posts tables.
$db_meta = $this->data_store_meta->get_metadata_by_id( $meta->id );
if ( $db_meta ) {
$meta->key = $db_meta->meta_key;
$meta->value = $db_meta->meta_value;
}
}
$delete_meta = $this->data_store_meta->delete_meta( $object, $meta );
$changes_applied = $this->after_meta_change( $object, $meta );
if ( ! $changes_applied && $object instanceof WC_Abstract_Order && $this->should_backfill_post_record() && isset( $meta->key ) ) {
self::$backfilling_order_ids[] = $object->get_id();
if ( is_object( $meta->value ) && '__PHP_Incomplete_Class' === get_class( $meta->value ) ) {
$meta_value = maybe_serialize( $meta->value );
$wpdb->delete(
_get_meta_table( 'post' ),
array(
'post_id' => $object->get_id(),
'meta_key' => $meta->key, // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_meta_key
'meta_value' => $meta_value, // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_meta_value
),
array( '%d', '%s', '%s' )
);
wp_cache_delete( $object->get_id(), 'post_meta' );
/** @var \WC_Logger_Interface $logger */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort
$logger = wc_get_container()->get( LegacyProxy::class )->call_function( 'wc_get_logger' );
$logger->warning( sprintf( 'encountered an order meta value of type __PHP_Incomplete_Class during `delete_meta` in order with ID %d: "%s"', $object->get_id(), var_export( $meta_value, true ) ) ); // phpcs:ignore WordPress.PHP.DevelopmentFunctions.error_log_var_export
} else {
delete_post_meta( $object->get_id(), $meta->key, $meta->value );
}
self::$backfilling_order_ids = array_diff( self::$backfilling_order_ids, array( $object->get_id() ) );
}
return $delete_meta;
}