tribe_get_event_capacity( int|WP_Post $post )
Returns the capacity for a given Post/Event.
Contents
Parameters
- $post
-
(int|WP_Post) (Required) Post (event) we are trying to fetch capacity for.
Return
(int|null)
Source
File: src/template-tags/tickets.php
function tribe_get_event_capacity( $post ) { // When not dealing with a Instance of Post try to set it up. if ( ! $post instanceof WP_Post ) { $post = get_post( $post ); } // Bail when it's not a post or ID is 0. if ( ! $post instanceof WP_Post || 0 === $post->ID ) { return null; } $post_id = $post->ID; // This is really "post types that allow tickets". $event_types = Tribe__Tickets__Main::instance()->post_types(); // Bail when it's not an allowed post type. if ( ! in_array( $post->post_type, $event_types, true ) ) { return null; } $rsvp = Tribe__Tickets__RSVP::get_instance(); $rsvp_tickets = $rsvp->get_tickets_ids( $post_id ); $rsvp_cap = 0; foreach ( $rsvp_tickets as $rsvp_ticket ) { $cap = tribe_tickets_get_capacity( $rsvp_ticket ); if ( -1 === $cap || '' === $cap ) { $rsvp_cap = -1; break; } $rsvp_cap += $cap; } $provider_id = Tribe__Tickets__Tickets::get_event_ticket_provider( $post_id ); // Protect against ticket that exists but is of a type that is not enabled. if ( ! method_exists( $provider_id, 'get_instance' ) ) { return null; } $provider = call_user_func( [ $provider_id, 'get_instance' ] ); $tickets = $provider->get_tickets_ids( $post_id ); // We only have RSVPs. if ( empty( $tickets ) ) { return (int) $rsvp_cap; } $global_stock = new \Tribe__Tickets__Global_Stock( $post_id ); /** @var Tribe__Tickets__Tickets_Handler $tickets_handler */ $tickets_handler = tribe( 'tickets.handler' ); $tickets_cap = 0; $added_global_stock = false; foreach ( $tickets as $ticket ) { // Handle global stock. $mode = get_post_meta( $ticket, $global_stock::TICKET_STOCK_MODE, true ); if ( $global_stock::GLOBAL_STOCK_MODE !== $mode && $global_stock::CAPPED_STOCK_MODE !== $mode ) { $cap = tribe_tickets_get_capacity( $ticket ); if ( -1 === $cap ) { $tickets_cap = -1; break; } $tickets_cap += $cap; } elseif ( ! $added_global_stock ) { $global_cap = (int) get_post_meta( $post_id, $tickets_handler->key_capacity, true ); $tickets_cap += $global_cap; $added_global_stock = true; } } // If either is unlimited, it's all unlimited. if ( -1 === $tickets_cap || -1 === $rsvp_cap) { return -1; } $value = (int) $rsvp_cap + (int) $tickets_cap; return (int) $value; }
Changelog
Version | Description |
---|---|
4.12.3 | Use new helper method to account for possibly inactive ticket provider. |
4.11.3 | Introduced. |