tribe_tickets_get_ticket_stock_message( Tribe__Tickets__Ticket_Object $ticket,  $sold_label_override = '' )

Gets the “tickets sold” message for a given ticket


Parameters

$ticket

(Tribe__Tickets__Ticket_Object) (Required) Ticket to analyze.


Top ↑

Return

(string)


Top ↑

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;
	}

Top ↑

Changelog

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.