Automattic\WooCommerce\Internal\DataStores\Orders

OrdersTableDataStore::delete_meta()publicWC 1.0

Deletes meta based on meta ID.

Метод класса: OrdersTableDataStore{}

Хуков нет.

Возвращает

true|false.

Использование

$OrdersTableDataStore = new OrdersTableDataStore();
$OrdersTableDataStore->delete_meta( $object, $meta );
$object(WC_Data) (обязательный) (передается по ссылке — &)
WC_Data object.
$meta(\stdClass) (обязательный)
(containing at least ->id).

Код OrdersTableDataStore::delete_meta() WC 8.7.0

public function delete_meta( &$object, $meta ) {
	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' );
			$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;
}