256 lines
5.5 KiB
PHP
256 lines
5.5 KiB
PHP
|
|
<?php
|
||
|
|
|
||
|
|
namespace Blocksy;
|
||
|
|
|
||
|
|
class WooCommerceCheckout {
|
||
|
|
public function __construct() {
|
||
|
|
add_action('wp', function () {
|
||
|
|
if (! blocksy_get_theme_mod('blocksy_has_checkout_coupon', false)) {
|
||
|
|
remove_action('woocommerce_before_checkout_form', 'woocommerce_checkout_coupon_form', 10);
|
||
|
|
}
|
||
|
|
});
|
||
|
|
|
||
|
|
add_action('elementor/widget/before_render_content', function($widget) {
|
||
|
|
if (
|
||
|
|
(
|
||
|
|
class_exists('Elementor\Jet_Woo_Builder_Checkout_Order_Review')
|
||
|
|
&&
|
||
|
|
$widget instanceof \Elementor\Jet_Woo_Builder_Checkout_Order_Review
|
||
|
|
)
|
||
|
|
||
|
||
|
|
(
|
||
|
|
class_exists('ElementorPro\Modules\Woocommerce\Widgets\Checkout')
|
||
|
|
&&
|
||
|
|
$widget instanceof \ElementorPro\Modules\Woocommerce\Widgets\Checkout
|
||
|
|
)
|
||
|
|
) {
|
||
|
|
global $ct_skip_checkout;
|
||
|
|
$ct_skip_checkout = true;
|
||
|
|
}
|
||
|
|
|
||
|
|
if (
|
||
|
|
class_exists('ElementorPro\Modules\Woocommerce\Widgets\Checkout')
|
||
|
|
&&
|
||
|
|
$widget instanceof ElementorPro\Modules\Woocommerce\Widgets\Checkout
|
||
|
|
) {
|
||
|
|
global $ct_skip_checkout;
|
||
|
|
$ct_skip_checkout = true;
|
||
|
|
}
|
||
|
|
}, 10, 1);
|
||
|
|
|
||
|
|
add_action('woocommerce_before_checkout_form', function () {
|
||
|
|
add_action('sellkit_checkout_one_page_express_methods', function() {
|
||
|
|
global $ct_skip_checkout;
|
||
|
|
$ct_skip_checkout = true;
|
||
|
|
});
|
||
|
|
|
||
|
|
if (function_exists('wcmultichecout_woocommerce_locate_template')) {
|
||
|
|
global $ct_skip_checkout;
|
||
|
|
$ct_skip_checkout = true;
|
||
|
|
}
|
||
|
|
|
||
|
|
add_action('kco_wc_before_wrapper', function() {
|
||
|
|
global $ct_skip_checkout;
|
||
|
|
$ct_skip_checkout = true;
|
||
|
|
});
|
||
|
|
|
||
|
|
add_action( 'wc_dibs_before_checkout_form', function() {
|
||
|
|
global $ct_skip_checkout;
|
||
|
|
$ct_skip_checkout = true;
|
||
|
|
});
|
||
|
|
|
||
|
|
if (class_exists('Svea_Checkout_For_Woocommerce\Template_Handler')) {
|
||
|
|
global $ct_skip_checkout;
|
||
|
|
$ct_skip_checkout = true;
|
||
|
|
}
|
||
|
|
}, 10, 1);
|
||
|
|
|
||
|
|
add_action('wpfunnels/before_gb_checkout_form', function($widget) {
|
||
|
|
global $ct_skip_checkout;
|
||
|
|
$ct_skip_checkout = true;
|
||
|
|
}, 10 , 1);
|
||
|
|
|
||
|
|
add_action('cfw_checkout_main_container_start', function($widget) {
|
||
|
|
global $ct_skip_checkout;
|
||
|
|
$ct_skip_checkout = true;
|
||
|
|
}, 10, 1);
|
||
|
|
|
||
|
|
add_action('woocommerce_sco_before_checkout_page', function() {
|
||
|
|
global $ct_skip_checkout;
|
||
|
|
$ct_skip_checkout = true;
|
||
|
|
});
|
||
|
|
|
||
|
|
add_action('wp', function () {
|
||
|
|
if (! $this->has_custom_checkout()) {
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
|
||
|
|
add_action('woocommerce_checkout_before_customer_details', function () {
|
||
|
|
global $ct_skip_checkout;
|
||
|
|
|
||
|
|
if ($ct_skip_checkout) {
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
|
||
|
|
echo '<div class="ct-customer-details">';
|
||
|
|
}, PHP_INT_MIN);
|
||
|
|
|
||
|
|
add_action('woocommerce_checkout_after_customer_details', function () {
|
||
|
|
global $ct_skip_checkout;
|
||
|
|
|
||
|
|
if ($ct_skip_checkout) {
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
|
||
|
|
echo '</div>';
|
||
|
|
}, PHP_INT_MAX);
|
||
|
|
|
||
|
|
add_action('woocommerce_checkout_before_order_review_heading', function () {
|
||
|
|
global $ct_skip_checkout;
|
||
|
|
|
||
|
|
if ($ct_skip_checkout) {
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
|
||
|
|
echo '<div class="ct-order-review">';
|
||
|
|
}, PHP_INT_MIN);
|
||
|
|
|
||
|
|
add_action('woocommerce_checkout_after_order_review', function () {
|
||
|
|
global $ct_skip_checkout;
|
||
|
|
|
||
|
|
if ($ct_skip_checkout) {
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
|
||
|
|
echo '</div>';
|
||
|
|
}, PHP_INT_MAX);
|
||
|
|
});
|
||
|
|
|
||
|
|
add_action(
|
||
|
|
'woocommerce_before_template_part',
|
||
|
|
function ($template_name, $template_path, $located, $args) {
|
||
|
|
if ($template_name !== 'checkout/form-checkout.php') {
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
|
||
|
|
ob_start();
|
||
|
|
},
|
||
|
|
1,
|
||
|
|
4
|
||
|
|
);
|
||
|
|
|
||
|
|
add_action(
|
||
|
|
'woocommerce_after_template_part',
|
||
|
|
function ($template_name, $template_path, $located, $args) {
|
||
|
|
if ($template_name !== 'checkout/form-checkout.php') {
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
|
||
|
|
$result = ob_get_clean();
|
||
|
|
|
||
|
|
global $ct_skip_checkout;
|
||
|
|
|
||
|
|
if ($this->has_custom_checkout() && ! $ct_skip_checkout) {
|
||
|
|
$form_reader = new \WP_HTML_Tag_Processor($result);
|
||
|
|
|
||
|
|
if (
|
||
|
|
$form_reader->next_tag([
|
||
|
|
'tag_name' => 'form',
|
||
|
|
'class_name' => 'woocommerce-checkout',
|
||
|
|
])
|
||
|
|
) {
|
||
|
|
$form_reader->add_class('ct-woocommerce-checkout');
|
||
|
|
$result = $form_reader->get_updated_html();
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
if (class_exists('Woocommerce_German_Market')) {
|
||
|
|
$search = '/' . preg_quote('<h3 id="order_review_heading">', '/') . '/';
|
||
|
|
|
||
|
|
$result = preg_replace(
|
||
|
|
$search,
|
||
|
|
'<div class="ct-order-review"><h3 id="order_review_heading">',
|
||
|
|
$result,
|
||
|
|
1
|
||
|
|
);
|
||
|
|
}
|
||
|
|
|
||
|
|
echo $result;
|
||
|
|
},
|
||
|
|
1,
|
||
|
|
4
|
||
|
|
);
|
||
|
|
|
||
|
|
add_action(
|
||
|
|
'woocommerce_before_template_part',
|
||
|
|
function ($template_name, $template_path, $located, $args) {
|
||
|
|
if ($template_name !== 'cart/cart-shipping.php') {
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
|
||
|
|
ob_start();
|
||
|
|
},
|
||
|
|
1,
|
||
|
|
4
|
||
|
|
);
|
||
|
|
|
||
|
|
add_action(
|
||
|
|
'woocommerce_after_template_part',
|
||
|
|
function ($template_name, $template_path, $located, $args) {
|
||
|
|
if ($template_name !== 'cart/cart-shipping.php') {
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
|
||
|
|
$result = ob_get_clean();
|
||
|
|
|
||
|
|
// drop the first column
|
||
|
|
$result = preg_replace(
|
||
|
|
'/<th>.+?<\/th>/',
|
||
|
|
'',
|
||
|
|
$result
|
||
|
|
);
|
||
|
|
|
||
|
|
// add option title, collspan and remove data-title
|
||
|
|
echo preg_replace(
|
||
|
|
'/(<td data-title=".*>)/',
|
||
|
|
'<td colspan="2">' . blocksy_html_tag(
|
||
|
|
'div',
|
||
|
|
[
|
||
|
|
'class' => 'ct-shipping-heading'
|
||
|
|
],
|
||
|
|
$args['package_name']
|
||
|
|
),
|
||
|
|
$result
|
||
|
|
);
|
||
|
|
},
|
||
|
|
1,
|
||
|
|
4
|
||
|
|
);
|
||
|
|
}
|
||
|
|
|
||
|
|
public function has_custom_checkout() {
|
||
|
|
$has_custom_checkout = true;
|
||
|
|
|
||
|
|
if (class_exists('FluidCheckout')) {
|
||
|
|
$has_custom_checkout = false;
|
||
|
|
}
|
||
|
|
|
||
|
|
if (class_exists('WFFN_Core')) {
|
||
|
|
$has_custom_checkout = false;
|
||
|
|
}
|
||
|
|
|
||
|
|
global $post;
|
||
|
|
|
||
|
|
if ($post && $post->post_type === 'cartflows_step') {
|
||
|
|
$has_custom_checkout = false;
|
||
|
|
}
|
||
|
|
|
||
|
|
$has_custom_checkout = apply_filters(
|
||
|
|
'blocksy:woocommerce:checkout:has-custom-markup',
|
||
|
|
$has_custom_checkout
|
||
|
|
);
|
||
|
|
|
||
|
|
return $has_custom_checkout;
|
||
|
|
}
|
||
|
|
}
|