logger->log( 'Start-' . __CLASS__ . '::' . __FUNCTION__ ); wcf()->logger->log( 'Only for thank you page' ); if ( wcf()->flow->is_thankyou_page_exists( $order ) ) { if ( _is_wcf_doing_checkout_ajax() ) { $checkout_id = wcf()->utils->get_checkout_id_from_post_data(); if ( ! $checkout_id ) { $checkout_id = wcf()->utils->get_checkout_id_from_order( $order->get_id() ); } } else { $checkout_id = wcf()->utils->get_checkout_id_from_order( $order->get_id() ); } wcf()->logger->log( 'Checkout ID : ' . $checkout_id ); if ( $checkout_id ) { $thankyou_step_id = wcf()->flow->get_thankyou_page_id( $order ); if ( $thankyou_step_id ) { $order_recieve_url = get_permalink( $thankyou_step_id ); $order_recieve_url = add_query_arg( array( 'wcf-order' => $order->get_id(), 'wcf-key' => $order->get_order_key(), ), $order_recieve_url ); } } } wcf()->logger->log( 'End-' . __CLASS__ . '::' . __FUNCTION__ ); return $order_recieve_url; } /** * Cancel and redirect to checkout * * @param string $return_url url. * @since 1.0.0 */ function redirect_to_checkout_on_cancel( $return_url ) { if ( _is_wcf_doing_checkout_ajax() ) { $checkout_id = wcf()->utils->get_checkout_id_from_post_data(); if ( ! $checkout_id ) { $checkout_id = wcf()->utils->get_checkout_id_from_order( $order->get_id() ); } } else { $checkout_id = wcf()->utils->get_checkout_id_from_order( $order->get_id() ); } if ( $checkout_id ) { $return_url = add_query_arg( array( 'cancel_order' => 'true', '_wpnonce' => wp_create_nonce( 'woocommerce-cancel_order' ), ), get_permalink( $checkout_id ) ); } return $return_url; } /** * Remove theme styles. * * @since 1.0.0 */ function remove_theme_styles() { if ( Cartflows_Compatibility::get_instance()->is_compatibility_theme_enabled() ) { return; } // get all styles data. global $wp_styles; global $wp_scripts; $get_stylesheet = 'themes/' . get_stylesheet() . '/'; $get_template = 'themes/' . get_template() . '/'; $remove_styles = apply_filters( 'cartflows_remove_theme_styles', true ); if ( $remove_styles ) { // loop over all of the registered scripts.. foreach ( $wp_styles->registered as $handle => $data ) { if ( strpos( $data->src, $get_template ) !== false || strpos( $data->src, $get_stylesheet ) !== false ) { // remove it. wp_deregister_style( $handle ); wp_dequeue_style( $handle ); } } } $remove_scripts = apply_filters( 'cartflows_remove_theme_scripts', true ); if ( $remove_scripts ) { // loop over all of the registered scripts. foreach ( $wp_scripts->registered as $handle => $data ) { if ( strpos( $data->src, $get_template ) !== false || strpos( $data->src, $get_stylesheet ) !== false ) { // remove it. wp_deregister_script( $handle ); wp_dequeue_script( $handle ); } } } } /** * Update main order data in transient. * * @param array $woo_styles new styles array. * @since 1.0.0 * @return array. */ function woo_default_css( $woo_styles ) { $woo_styles = array( 'woocommerce-layout' => array( 'src' => plugins_url( 'assets/css/woocommerce-layout.css', WC_PLUGIN_FILE ), 'deps' => '', 'version' => WC_VERSION, 'media' => 'all', 'has_rtl' => true, ), 'woocommerce-smallscreen' => array( 'src' => plugins_url( 'assets/css/woocommerce-smallscreen.css', WC_PLUGIN_FILE ), 'deps' => 'woocommerce-layout', 'version' => WC_VERSION, 'media' => 'only screen and (max-width: ' . apply_filters( 'woocommerce_style_smallscreen_breakpoint', '768px' ) . ')', 'has_rtl' => true, ), 'woocommerce-general' => array( 'src' => plugins_url( 'assets/css/woocommerce.css', WC_PLUGIN_FILE ), 'deps' => '', 'version' => WC_VERSION, 'media' => 'all', 'has_rtl' => true, ), ); return $woo_styles; } /** * Init Actions. * * @since 1.0.0 */ function init_actions() { $this->set_flow_session(); } /** * Set flow session. * * @since 1.0.0 */ function set_flow_session() { if ( wcf()->utils->is_step_post_type() ) { add_action( 'wp_head', array( $this, 'noindex_flow' ) ); wcf()->utils->do_not_cache(); /* Set key to support pixel */ if ( isset( $_GET['wcf-key'] ) ) { $_GET['key'] = $_GET['wcf-key']; $_REQUEST['key'] = $_GET['wcf-key']; } if ( isset( $_GET['wcf-order'] ) ) { $_GET['order'] = $_GET['wcf-order']; $_REQUEST['order'] = $_GET['wcf-order']; $_GET['order-received'] = $_GET['wcf-order']; $_REQUEST['order-received'] = $_GET['wcf-order']; } } } /** * Add noindex, nofollow. * * @since 1.0.0 */ function noindex_flow() { $common = Cartflows_Helper::get_common_settings(); if ( 'enable' === $common['disallow_indexing'] ) { echo ''; } } /** * WP Actions. * * @since 1.0.0 */ function wp_actions() { if ( wcf()->utils->is_step_post_type() ) { /* CSS Compatibility for All theme */ add_filter( 'woocommerce_enqueue_styles', array( $this, 'woo_default_css' ), 9999 ); add_action( 'wp_enqueue_scripts', array( $this, 'remove_theme_styles' ), 9999 ); add_action( 'wp_enqueue_scripts', array( $this, 'global_flow_scripts' ), 20 ); /* Load woo templates from plugin */ add_filter( 'woocommerce_locate_template', array( $this, 'override_woo_template' ), 20, 3 ); /* Add version class to body in frontend. */ add_filter( 'body_class', array( $this, 'add_cartflows_lite_version_to_body' ) ); /* Custom Script Option */ add_action( 'wp_head', array( $this, 'custom_script_option' ) ); /* Remove the action applied by the Flatsome theme */ if ( Cartflows_Compatibility::get_instance()->is_flatsome_enabled() ) { $this->remove_flatsome_action(); } } } /** * Global flow scripts. * * @since 1.0.0 */ function global_flow_scripts() { global $post; $flow = get_post_meta( $post->ID, 'wcf-flow-id', true ); $current_step = $post->ID; $next_step_link = ''; $compatibility = Cartflows_Compatibility::get_instance(); if ( _is_wcf_landing_type() ) { $next_step_id = wcf()->utils->get_next_step_id( $flow, $current_step ); $next_step_link = get_permalink( $next_step_id ); } $localize = array( 'ajax_url' => admin_url( 'admin-ajax.php' ), 'is_pb_preview' => $compatibility->is_page_builder_preview(), 'current_theme' => $compatibility->get_current_theme(), 'current_flow' => $flow, 'current_step' => $current_step, 'next_step' => $next_step_link, ); wp_localize_script( 'jquery', 'cartflows', apply_filters( 'global_cartflows_js_localize', $localize ) ); wp_enqueue_style( 'wcf-frontend-global', CARTFLOWS_URL . 'assets/css/frontend.css', array(), CARTFLOWS_VER ); wp_style_add_data( 'wcf-frontend-global', 'rtl', 'replace' ); wp_enqueue_script( 'wcf-frontend-global', CARTFLOWS_URL . 'assets/js/frontend.js', array( 'jquery' ), CARTFLOWS_VER, true ); } /** * Custom Script in head. * * @since 1.0.0 */ function custom_script_option() { /* Add custom script to header in frontend. */ $script = $this->get_custom_script(); if ( '' !== $script ) { if ( false === strpos( $script, ''; } echo ''; echo $script; echo ''; } } /** * Override woo templates. * * @param string $template new Template full path. * @param string $template_name Template name. * @param string $template_path Template Path. * @since 1.1.5 * @return string. */ function override_woo_template( $template, $template_name, $template_path ) { global $woocommerce; $_template = $template; $plugin_path = CARTFLOWS_DIR . 'woocommerce/template/'; if ( file_exists( $plugin_path . $template_name ) ) { $template = $plugin_path . $template_name; } if ( ! $template ) { $template = $_template; } return $template; } /** * Remove the action applied by the Flatsome theme. * * @since 1.1.5 * @return void. */ function remove_flatsome_action() { // Remove action where flatsome dequeued the woocommerce's default styles. remove_action( 'wp_enqueue_scripts', 'flatsome_woocommerce_scripts_styles', 98 ); } /** * Add version class to body in frontend. * * @since 1.1.5 * @param array $classes classes. * @return array $classes classes. */ function add_cartflows_lite_version_to_body( $classes ) { $classes[] = 'cartflows-' . CARTFLOWS_VER; return $classes; } /** * Get custom script data. * * @since 1.0.0 */ function get_custom_script() { global $post; $script = get_post_meta( $post->ID, 'wcf-custom-script', true ); return $script; } } /** * Prepare if class 'Cartflows_Frontend' exist. * Kicking this off by calling 'get_instance()' method */ Cartflows_Frontend::get_instance();