WC_Abstract_Order::data_store_supports_deferred_item_deletion
Determine whether the data store supports deferred item deletion.
Method of the class: WC_Abstract_Order{}
No Hooks.
Returns
bool.
Usage
// private - for code of main (parent) class only $result = $this->data_store_supports_deferred_item_deletion(): bool;
WC_Abstract_Order::data_store_supports_deferred_item_deletion() WC Abstract Order::data store supports deferred item deletion code WC 11.1.2
private function data_store_supports_deferred_item_deletion(): bool {
if ( null !== $this->data_store_supports_deferred_item_deletion ) {
return $this->data_store_supports_deferred_item_deletion;
}
/**
* Data store wrapper.
*
* @var WC_Data_Store $data_store
*/
$data_store = $this->data_store;
if ( ! $data_store->has_callable( 'delete_items' ) ) {
$this->data_store_supports_deferred_item_deletion = true;
return true;
}
$data_store_class = $data_store->get_current_class_name();
$is_cpt_store = is_a( $data_store_class, Abstract_WC_Order_Data_Store_CPT::class, true );
if ( ! $is_cpt_store ) {
// Standalone data stores opt in to deferred deletion by providing this optional method.
$this->data_store_supports_deferred_item_deletion = $data_store->has_callable( 'delete_items_by_ids' );
return $this->data_store_supports_deferred_item_deletion;
}
$delete_items_method = new ReflectionMethod( $data_store_class, 'delete_items' );
if ( Abstract_WC_Order_Data_Store_CPT::class === $delete_items_method->getDeclaringClass()->getName() ) {
$this->data_store_supports_deferred_item_deletion = true;
return true;
}
if ( ! $data_store->has_callable( 'delete_items_by_ids' ) ) {
$this->data_store_supports_deferred_item_deletion = false;
return false;
}
$delete_items_by_ids_method = new ReflectionMethod( $data_store_class, 'delete_items_by_ids' );
$this->data_store_supports_deferred_item_deletion = Abstract_WC_Order_Data_Store_CPT::class !== $delete_items_by_ids_method->getDeclaringClass()->getName();
return $this->data_store_supports_deferred_item_deletion;
}