add_item( $data ); if ( ! empty( $order_item_id ) ) { /** * Action that runs when an order item is successfully added. * * @since 3.1 * @param int Order item ID. * @param array Array of order item data. */ do_action( 'edd_order_item_added', $order_item_id, $data ); } return $order_item_id; } /** * Delete an order item. * * @since 3.0 * * @param int $order_item_id Order item ID. * @return int|false `1` if the item was deleted successfully, false on error. */ function edd_delete_order_item( $order_item_id = 0 ) { $order_items = new EDD\Database\Queries\Order_Item(); $order_item_deleted = $order_items->delete_item( $order_item_id ); if ( ! empty( $order_item_deleted ) ) { /** * Action that runs when an order item is deleted. * * @since 3.0.5 * * @param int $order_item_id Order item ID being deleted. */ do_action( 'edd_order_item_deleted', $order_item_id ); } return $order_item_deleted; } /** * Update an order item. * * @since 3.0 * * @param int $order_item_id Order item ID. * @param array $data { * Array of order item data. Default empty. * * @type int $order_id Order ID. Default 0. * @type int $product_id Product ID of the order item purchased. ID * refers to the download in the `wp_posts` table. * Default 0. * @type string $product_name Name of the order item. Default empty. * @type int $price_id ID of the price option purchased. Default 0. * @type int $cart_index Position of the order item in the cart. * Default 0. * @type string $type Order item type. Default `download`. * @type string $status Status of the order item. Default `inherit`. * @type int $quantity Quantity purchased of the order item. Default 0. * @type float $amount Amount for the order item. Default 0. * @type float $subtotal Subtotal of the order item. Default 0. * @type float $discount Discount applied to the order item. Default 0. * @type float $tax Tax applied to the order item. Default 0. * @type float $total Item total. Default 0. * @type string $date_created Optional. Automatically calculated on add/edit. * The date & time the order item was inserted. * Format: YYYY-MM-DD HH:MM:SS. Default empty. * @type string $date_modified Optional. Automatically calculated on add/edit. * The date & time the order item was last modified. * Format: YYYY-MM-DD HH:MM:SS. Default empty. * } * * @return int|false Number of rows updated if successful, false otherwise. */ function edd_update_order_item( $order_item_id = 0, $data = array() ) { $order_items = new EDD\Database\Queries\Order_Item(); $previous_order_item_data = edd_get_order_item( $order_item_id ); $order_item_updated = $order_items->update_item( $order_item_id, $data ); if ( ! empty( $order_item_updated ) ) { /** * Action that runs when an order item is updated. * * @since 3.1 * @param int The order item ID. * @param array The array of data to update. * @param EDD\Orders\Order_Item The original order item object. */ do_action( 'edd_order_item_updated', $order_item_id, $data, $previous_order_item_data ); } return $order_item_updated; } /** * Get an order item by ID. * * @since 3.0 * * @param int $order_item_id Order item ID. * @return EDD\Orders\Order_Item|false Order_Item object if successful, false * otherwise. */ function edd_get_order_item( $order_item_id = 0 ) { $order_items = new EDD\Database\Queries\Order_Item(); // Return order item return $order_items->get_item( $order_item_id ); } /** * Get an order item by field and value. * * @since 3.0 * * @param string $field Database table field. * @param string $value Value of the row. * * @return EDD\Orders\Order_Item|false Order_Item object if successful, false * otherwise. */ function edd_get_order_item_by( $field = '', $value = '' ) { $order_items = new EDD\Database\Queries\Order_Item(); // Return order item return $order_items->get_item_by( $field, $value ); } /** * Query for order items. * * @see \EDD\Database\Queries\Order_Item::__construct() * * @since 3.0 * * @param array $args Arguments. See `EDD\Database\Queries\Order_Item` for * accepted arguments. * @return \EDD\Orders\Order_Item[] Array of `Order_Item` objects. */ function edd_get_order_items( $args = array() ) { // Parse args $r = wp_parse_args( $args, array( 'number' => 30, ) ); // Instantiate a query object $order_items = new EDD\Database\Queries\Order_Item(); // Return items return $order_items->query( $r ); } /** * Count order items. * * @see \EDD\Database\Queries\Order_Item::__construct() * * @since 3.0 * * @param array $args Arguments. See `EDD\Database\Queries\Order_Item` for * accepted arguments. * @return int Number of order items returned based on query arguments passed. */ function edd_count_order_items( $args = array() ) { // Parse args $r = wp_parse_args( $args, array( 'count' => true, ) ); // Query for count(s) $order_items = new EDD\Database\Queries\Order_Item( $r ); // Return count(s) return absint( $order_items->found_items ); } /** * Query for and return array of order item counts, keyed by status. * * @see \EDD\Database\Queries\Order_Item::__construct() * * @since 3.0 * * @param array $args Arguments. See `EDD\Database\Queries\Order_Item` for * accepted arguments. * @return array Order items keyed by status. */ function edd_get_order_item_counts( $args = array() ) { // Parse args $r = wp_parse_args( $args, array( 'order_id' => 0, 'count' => true, 'groupby' => 'status', ) ); // Query for count $counts = new EDD\Database\Queries\Order_Item( $r ); // Format & return return edd_format_counts( $counts, $r['groupby'] ); }