Tribe__Tickets__Tickets::maybe_redirect_to_attendees_registration_screen( string|null $redirect = null, null|int $post_id = null )
If tickets exist in the cart for which we don’t have meta info, redirect to the meta collection screen.
Contents
Parameters
- $redirect
-
(string|null) (Optional) URL to redirect to.
Default value: null
- $post_id
-
(null|int) (Optional) Post ID for cart.
Default value: null
Source
File: src/Tribe/Tickets.php
public function maybe_redirect_to_attendees_registration_screen( $redirect = null ) { // Bail if the meta storage class doesn't exist if ( ! class_exists( 'Tribe__Tickets_Plus__Meta__Storage' ) ) { return; } if ( ! class_exists( 'Tribe__Tickets_Plus__Main' ) ) { return; } // They're submitting RSVPs, do not include them for now if ( ! empty( $_POST['tribe_tickets_rsvp_submission'] ) ) { return; } if ( tribe( 'tickets.attendee_registration' )->is_on_page() ) { return; } // Return if not trying to access the checkout page if ( ! $this->is_checkout_page() ) { return; } /** * Modify the tickets in cart, useful to * change the contents for each vendor * @since 4.9 * * @param array */ $tickets_in_cart = apply_filters( 'tribe_tickets_tickets_in_cart', [] ); // Bail if there are no tickets if ( empty( $tickets_in_cart ) ) { return; } $is_paypal = (bool) $redirect; /** @var Tribe__Tickets_Plus__Meta $meta */ $meta = tribe( 'tickets-plus.main' )->meta(); $cart_has_meta = true; // If the method exists (latest ET+ version), run it. if ( method_exists( $meta, 'cart_has_meta' ) ) { $cart_has_meta = $meta->cart_has_meta( $tickets_in_cart ); } $cart_has_required_meta = $meta->cart_has_required_meta( $tickets_in_cart ); $up_to_date = tribe( 'tickets-plus.meta.contents' )->is_stored_meta_up_to_date( $tickets_in_cart ); // If WooCommerce or EDD if ( ! $is_paypal ) { // Bail if there are no required fields in cart or the stored data is up to date // And they're submitting the Attendee Registration page if ( isset( $_REQUEST['tribe_tickets_checkout'] ) && ( ! $cart_has_required_meta || $up_to_date ) ) { return; } // Bail If things are up to date and they haven't submitted the form // to access the registration page. if ( $up_to_date && ! isset( $_REQUEST['wootickets_process'] ) && ! isset( $_REQUEST['eddtickets_process'] ) ) { return; } // Bail if processing checkout for WooCommerce if ( isset( $_REQUEST['key'] ) ) { return; } } // If PayPal and cart does not have meta elseif ( ! $cart_has_meta ) { return; } $url = tribe( 'tickets.attendee_registration' )->get_url(); $storage = new Tribe__Tickets_Plus__Meta__Storage(); if ( ! empty( $redirect ) ) { $key = $storage->store_temporary_data( $redirect ); /** @var \Tribe__Tickets__Commerce__PayPal__Main $commerce_paypal */ $commerce_paypal = tribe( 'tickets.commerce.paypal' ); $url = add_query_arg( array( 'event_tickets_redirect_to' => $key, 'provider' => $commerce_paypal->attendee_object ), $url ); } wp_safe_redirect( $url, 307 ); exit; }
Changelog
Version | Description |
---|---|
5.0.2 | Correct provider attendee object. |
4.9 | Introduced. |