LLMS_Shortcode_Checkout::output( array $atts )
Gather a bunch of information and output the actual content for the shortcode
Description Description
Parameters Parameters
- $atts
-
(array) (Required) shortcode atts from originating shortcode
Return Return
(void)
Source Source
File: includes/shortcodes/class.llms.shortcode.checkout.php
public static function output( $atts ) { global $wp; $atts = $atts ? $atts : array(); $atts['cols'] = isset( $atts['cols'] ) ? $atts['cols'] : 2; self::$uid = get_current_user_id(); $atts['gateways'] = LLMS()->payment_gateways()->get_enabled_payment_gateways(); $atts['selected_gateway'] = LLMS()->payment_gateways()->get_default_gateway(); $atts['order_key'] = ''; $atts['field_data'] = array(); if ( isset( $_POST ) && isset( $_POST['action'] ) && 'create_pending_order' === $_POST['action'] ) { $atts['field_data'] = $_POST; } elseif ( self::$uid ) { $atts['field_data'] = get_current_user_id(); } echo '<div class="llms-checkout-wrapper">'; // allow gateways to throw errors before outputting anything else // useful if you need to check for extra session or query string data $err = apply_filters( 'lifterlms_pre_checkout_error', false ); if ( $err ) { return self::error( $err ); } llms_print_notices(); // purchase step 1 if ( isset( $_GET['plan'] ) && is_numeric( $_GET['plan'] ) ) { // Only retrieve if plan is a llms_access_plan and is published if ( 0 === strcmp( get_post_status( $_GET['plan'] ), 'publish' ) && 0 === strcmp( get_post_type( $_GET['plan'] ), 'llms_access_plan' ) ) { $coupon = LLMS()->session->get( 'llms_coupon' ); if ( isset( $coupon['coupon_id'] ) && isset( $coupon['plan_id'] ) ) { if ( $coupon['plan_id'] == $_GET['plan'] ) { $atts['coupon'] = new LLMS_Coupon( $coupon['coupon_id'] ); } else { LLMS()->session->set( 'llms_coupon', false ); $atts['coupon'] = false; } } else { $atts['coupon'] = false; } // Use posted order key to resume a pending order. if ( isset( $_POST['llms_order_key'] ) ) { $atts['order_key'] = sanitize_text_field( $_POST['llms_order_key'] ); // Attempt to located a pending order. } elseif ( self::$uid ) { $pending_order = llms_locate_order_for_user_and_plan( self::$uid, $_GET['plan'] ); if ( $pending_order ) { $order = llms_get_post( $pending_order ); $atts['order_key'] = ( 'llms-pending' === $order->get( 'status' ) ) ? $order->get( 'order_key' ) : ''; } } $atts['plan'] = new LLMS_Access_Plan( $_GET['plan'] ); $atts['product'] = $atts['plan']->get_product(); self::checkout( $atts ); } else { self::error( __( 'Invalid access plan.', 'lifterlms' ) ); }// End if(). } elseif ( isset( $wp->query_vars['confirm-payment'] ) ) { // $atts['plan'] = new LLMS_Access_Plan( $_GET['plan'] ); if ( ! isset( $_GET['order'] ) ) { return self::error( __( 'Could not locate an order to confirm.', 'lifterlms' ) ); } $order = llms_get_order_by_key( $_GET['order'] ); $atts['plan'] = new LLMS_Access_Plan( $order->get( 'plan_id' ) ); $atts['product'] = $atts['plan']->get_product(); if ( $order->get( 'coupon_id' ) ) { $atts['coupon'] = new LLMS_Coupon( $order->get( 'coupon_id' ) ); } else { $atts['coupon'] = false; } $atts['selected_gateway'] = LLMS()->payment_gateways()->get_gateway_by_id( $order->get( 'payment_gateway' ) ); self::confirm_payment( $atts ); } else { return self::error( sprintf( __( 'Your cart is currently empty. Click <a href="%s">here</a> to get started.', 'lifterlms' ), llms_get_page_url( 'courses' ) ) ); }// End if(). echo '</div><!-- .llms-checkout-wrapper -->'; }
Expand full source code Collapse full source code View on GitHub
Changelog Changelog
Version | Description |
---|---|
3.30.1 | Added check via llms_locate_order_for_user_and_plan() to automatically resume an existing pending order for logged in users if one exists. |
1.0.0 | Introduced. |
User Contributed Notes User Contributed Notes
Permalink: