Tribe__Tickets__Tickets::ticket_add( int $post_id, array $data )
Creates a ticket object and calls the child save_ticket function
Contents
Parameters
- $post_id
-
(int) (Required) ID of parent "event" post
- $data
-
(array) (Required) Raw post data
Return
(boolean)
Source
File: src/Tribe/Tickets.php
public function ticket_add( $post_id, $data ) { $ticket = new Tribe__Tickets__Ticket_Object(); $ticket->ID = isset( $data['ticket_id'] ) ? absint( $data['ticket_id'] ) : null; $ticket->name = isset( $data['ticket_name'] ) ? esc_html( $data['ticket_name'] ) : null; $ticket->description = isset( $data['ticket_description'] ) ? sanitize_textarea_field( $data['ticket_description'] ) : ''; $ticket->price = ! empty( $data['ticket_price'] ) ? filter_var( trim( $data['ticket_price'] ), FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION | FILTER_FLAG_ALLOW_THOUSAND ) : 0; $ticket->show_description = isset( $data['ticket_show_description'] ) ? 'yes' : 'no'; $ticket->provider_class = $this->class_name; $ticket->start_date = null; $ticket->end_date = null; $ticket->menu_order = isset( $data['ticket_menu_order'] ) ? intval( $data['ticket_menu_order'] ) : null; tribe( 'tickets.handler' )->toggle_manual_update_flag( true ); if ( ! empty( $ticket->price ) ) { // remove non-money characters $ticket->price = preg_replace( '/[^0-9\.\,]/Uis', '', $ticket->price ); } if ( ! empty( $data['ticket_start_date'] ) ) { $start_datetime = Tribe__Date_Utils::maybe_format_from_datepicker( $data['ticket_start_date'] ); if ( ! empty( $data['ticket_start_time'] ) ) { $start_datetime .= ' ' . $data['ticket_start_time']; $ticket->start_time = date( Tribe__Date_Utils::DBTIMEFORMAT, strtotime( ( $start_datetime ) ) ); } $ticket->start_date = date( Tribe__Date_Utils::DBDATEFORMAT, strtotime( $start_datetime ) ); } if ( ! empty( $data['ticket_end_date'] ) ) { $end_datetime = Tribe__Date_Utils::maybe_format_from_datepicker( $data['ticket_end_date'] ); if ( ! empty( $data['ticket_end_time'] ) ) { $end_datetime .= ' ' . $data['ticket_end_time']; $ticket->end_time = date( Tribe__Date_Utils::DBTIMEFORMAT, strtotime( ( $end_datetime ) ) ); } $ticket->end_date = date( Tribe__Date_Utils::DBDATEFORMAT, strtotime( $end_datetime ) ); } /** * Fired once a ticket has been created and added to a post * * @param int $post_id ID of parent "event" post * @param Tribe__Tickets__Ticket_Object $ticket Ticket object * @param array $data Submitted post data */ do_action( 'tribe_tickets_ticket_add', $post_id, $ticket, $data ); // Pass the control to the child object $save_ticket = $this->save_ticket( $post_id, $ticket, $data ); tribe( 'tickets.handler' )->toggle_manual_update_flag( false ); $post = get_post( $post_id ); if ( empty( $data['ticket_start_date'] ) ) { $date = strtotime( $post->post_date ); $date = date( 'Y-m-d 00:00:00', $date ); update_post_meta( $ticket->ID, tribe( 'tickets.handler' )->key_start_date, $date ); } if ( empty( $data['ticket_end_date'] ) && 'tribe_events' === $post->post_type ) { $event_end = get_post_meta( $post_id, '_EventEndDate', true ); update_post_meta( $ticket->ID, tribe( 'tickets.handler' )->key_end_date, $event_end ); } tribe( 'tickets.version' )->update( $ticket->ID ); return $save_ticket; }
You can use the above approach to create RSVPs as well. If you want to do that, you need to create an RSVP object instead of the ticket object, like this: