Automattic\WooCommerce\Internal\DataStores\Orders
HposOrderCapabilityHelper::translate_order_caps
Translate capabilities for HPOS orders.
Handles the full map_meta_cap filter callback. The caller only needs to verify that HPOS is enabled and sync is disabled before delegating.
Method of the class: HposOrderCapabilityHelper{}
No Hooks.
Returns
String[]. Translated capabilities.
Usage
$HposOrderCapabilityHelper = new HposOrderCapabilityHelper(); $HposOrderCapabilityHelper->translate_order_caps( $caps, $cap, $user_id, $args );
- $caps(string[]) (required)
- The resolved primitive capabilities.
- $cap(string) (required)
- The meta capability being checked.
- $user_id(int) (required)
- The user ID.
- $args(array) (required)
- Additional arguments (object ID).
Changelog
| Since 10.7.0 | Introduced. |
HposOrderCapabilityHelper::translate_order_caps() HposOrderCapabilityHelper::translate order caps code WC 11.0.0
public function translate_order_caps( $caps, $cap, $user_id, $args ) {
if ( ! in_array( $cap, array( 'edit_post', 'delete_post', 'read_post' ), true ) || ! isset( $args[0] ) ) {
return $caps;
}
$order_id = absint( $args[0] );
if ( ! $order_id ) {
return $caps;
}
$post = get_post( $order_id );
if ( $post instanceof WP_Post && DataSynchronizer::PLACEHOLDER_ORDER_POST_TYPE !== $post->post_type ) {
return $caps;
}
$order_type = OrderUtil::get_order_type( $order_id );
$order_type_ob = $order_type ? get_post_type_object( $order_type ) : null;
if ( ! ( $order_type_ob instanceof WP_Post_Type ) || ! $order_type_ob->map_meta_cap ) {
return $caps;
}
$order = wc_get_order( $order_id );
if ( ! $order instanceof WC_Abstract_Order ) {
return $caps;
}
switch ( $cap ) {
case 'edit_post':
return $this->map_edit_order_caps( $order, $order_type_ob, (int) $user_id, $post );
case 'delete_post':
return $this->map_delete_order_caps( $order, $order_type_ob, (int) $user_id, $post );
case 'read_post':
return $this->map_read_order_caps( $order, $order_type_ob, (int) $user_id, $post );
}
}