tribe_tickets_get_ticket_stock_message( Tribe__Tickets__Ticket_Object $ticket, $sold_label_override = '' )
Gets the “tickets sold” message for a given ticket
Contents
Parameters
- $ticket
-
(Tribe__Tickets__Ticket_Object) (Required) Ticket to analyze.
Return
(string)
Source
File: src/template-tags/tickets.php
function tribe_tickets_get_ticket_stock_message( Tribe__Tickets__Ticket_Object $ticket ) {
$event = Tribe__Tickets__Tickets::find_matching_event( $ticket );
$global_stock = new Tribe__Tickets__Global_Stock( $event->ID );
$stock = $ticket->stock();
$available = $ticket->available();
$sold = (int) $ticket->qty_sold();
/**
* Allows filtering the available number that will be displayed.
*
* @since 4.7
*
* @param int $available
* @param Tribe__Tickets__Ticket_Object $ticket
* @param int $sold
* @param int $stock
*/
$available = apply_filters( 'tribe_tickets_stock_message_available_quantity', $available, $ticket, $sold, $stock );
$cancelled = (int) $ticket->qty_cancelled();
$pending = (int) $ticket->qty_pending();
$refunded = (int) $ticket->qty_refunded();
$status = '';
$status_counts = array();
$is_global = Tribe__Tickets__Global_Stock::GLOBAL_STOCK_MODE === $ticket->global_stock_mode() && $global_stock->is_enabled();
$is_capped = Tribe__Tickets__Global_Stock::CAPPED_STOCK_MODE === $ticket->global_stock_mode() && $global_stock->is_enabled();
$stock_cap = $ticket->global_stock_cap();
$event_cap = tribe_tickets_get_capacity( $event->ID );
$ticket_cap = tribe_tickets_get_capacity( $ticket->ID );
$sold_label = __( 'issued', 'event-tickets' );
if ( 'Tribe__Tickets__RSVP' === $ticket->provider_class ) {
$sold_label = _x( "RSVP'd Going", 'separate going and remain RSVPs', 'event-tickets' );
}
// Base message
if ( 0 !== $sold ) {
if ( -1 === $available ) {
$status_counts[] = sprintf( esc_html__( '%s %d', 'event-tickets' ), esc_html( $sold_label ), esc_html( $sold ) );
} elseif ( $is_global ) {
$status_counts[] = sprintf( _x( '%1$d available of shared capacity', 'ticket shared capacity message (remaining stock)', 'event-tickets' ), tribe_tickets_get_readable_amount( $available ) );
} else {
// It's "own stock". We use the $stock value
$status_counts[] = sprintf( _x( '%1$d available', 'ticket stock message (remaining stock)', 'event-tickets' ), tribe_tickets_get_readable_amount( $available ) );
}
}
if ( ! empty( $status_counts ) ) {
//remove empty values and prepare to display if values
$status_counts = array_diff( $status_counts, array( '' ) );
if ( array_filter( $status_counts ) ) {
$status = sprintf( ' (%1$s)', implode( ', ', $status_counts ) );
}
}
$message = sprintf( '%1$d %2$s%3$s', absint( $sold ), esc_html( $sold_label ), esc_html( $status ) );
return $message;
}
Changelog
| Version | Description |
|---|---|
| 5.6.5 | Added $sold_label_override parameter. |
| 4.11.5 | Correct the sprintf placeholders that were forcing the readable amount to an integer. |
| 4.10.9 | Introduced. |