Current path: home/webdevt/www/demo2/wp-content/themes/blocksy/inc/components/woocommerce/single/
?? Go up: /home/webdevt/www/demo2/wp-content/themes/blocksy/inc/components/woocommerce
<?php
function blocksy_woocommerce_has_flexy_view() {
global $blocksy_is_quick_view;
if ($blocksy_is_quick_view) {
return true;
}
if (is_customize_preview() && wp_doing_ajax()) {
return true;
}
$is_variations_action = (isset($_REQUEST['action'])
&&
$_REQUEST['action'] === 'woocommerce_load_variations'
);
if (isset($_REQUEST['wc-ajax']) && $_REQUEST['wc-ajax'] === 'get_variation') {
$is_variations_action = true;
}
if (
(
blocksy_manager()->screen->is_product()
||
wp_doing_ajax()
)
&&
! blocksy_manager()->screen->uses_woo_default_template()
&&
! is_customize_preview()
&&
! $is_variations_action
) {
return false;
}
return !apply_filters('blocksy:woocommerce:product-view:use-default', false);
}
add_action('init', function() {
blocksy_manager()->woocommerce->single->register_translations();
});
if (!wp_doing_ajax()) {
add_filter('template_include', function ($template) {
if (blocksy_woocommerce_has_flexy_view()) {
remove_action(
'woocommerce_product_thumbnails',
'woocommerce_show_product_thumbnails',
20
);
}
return $template;
}, 900000009);
} else {
add_action('init', function () {
if (blocksy_woocommerce_has_flexy_view()) {
remove_action(
'woocommerce_product_thumbnails',
'woocommerce_show_product_thumbnails',
20
);
}
});
}
add_filter('blocksy_woo_single_options_layers:defaults', function ($opt) {
return array_merge($opt, [
[
'id' => 'product_tabs',
'enabled' => true,
],
]);
});
add_filter('blocksy_woo_single_right_options_layers:defaults', function ($opt) {
return array_merge($opt, [
[
'id' => 'product_tabs',
'enabled' => true,
],
]);
});
add_filter('blocksy_woo_single_options_layers:extra', function ($opt) {
return array_merge($opt, [
'product_tabs' => [
'label' => __('Product Tabs', 'blocksy'),
'condition' => [
'all' => [
'woo_tabs_type' => 'type-3|type-4',
'woo_accordion_in_summary' => 'summary',
]
],
'options' => [
'spacing' => [
'label' => __('Bottom Spacing', 'blocksy'),
'type' => 'ct-slider',
'min' => 0,
'max' => 100,
'value' => 10,
'responsive' => true,
'sync' => [
'id' => 'woo_single_layout_skip',
],
],
],
]
]);
});
add_action(
'blocksy:woocommerce:product:custom:layer',
function ($layer, $classes = 'ct-product-tabs') {
if (
$layer['id'] === 'product_tabs'
&&
blocksy_get_theme_mod('woo_accordion_in_summary', 'default') === 'summary'
) {
$tabs_type = blocksy_get_theme_mod('woo_tabs_type', 'type-1');
$res = $tabs_type;
$result = '';
ob_start();
if ($tabs_type === 'type-3') {
$result = blocksy_custom_accordion_tabs();
}
if ($tabs_type === 'type-4') {
$result = blocksy_custom_simple_tabs();
}
$result = ob_get_clean();
$res .= ':' . blocksy_get_theme_mod('woo_tabs_alignment', 'center');
echo str_replace(
'wc-tabs-wrapper"',
'wc-tabs-wrapper" data-type="' . $res . '"',
$result
);
}
}
);
$action_to_hook = 'wp';
if (wp_doing_ajax()) {
$action_to_hook = 'init';
}
add_action($action_to_hook, function () {
blocksy_manager()->woocommerce->single->receive_initial_woo_behavior([
// Validation by priority might be needed to ensure consistency.
// This way we can also validate if other plugins interfered with the
// action.
'product_add_to_cart' => has_action(
'woocommerce_single_product_summary',
'woocommerce_template_single_add_to_cart'
)
]);
// Remove default WooCommerce actions a little later, so we can check if
// someone else has removed them before us.
// This way, we will skip the layers that are disabled by the user or some
// plugin.
remove_action('woocommerce_single_product_summary', 'woocommerce_template_single_title', 5);
remove_action('woocommerce_single_product_summary', 'woocommerce_template_single_rating', 10);
remove_action('woocommerce_single_product_summary', 'woocommerce_template_single_price', 10);
remove_action('woocommerce_single_product_summary', 'woocommerce_template_single_excerpt', 20);
remove_action('woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 30);
remove_action('woocommerce_single_product_summary', 'woocommerce_template_single_meta', 40);
remove_action('woocommerce_single_product_summary', 'woocommerce_template_single_sharing', 50);
if (blocksy_get_theme_mod('woo_has_product_tabs', 'yes') === 'no') {
add_filter('woocommerce_product_tabs', function ($tabs) {
return [];
}, 99);
} else {
$tabs_type = blocksy_get_theme_mod('woo_tabs_type', 'type-1');
if (
blocksy_get_theme_mod('woo_has_product_tabs_description', 'no') === 'no'
&&
$tabs_type !== 'type-4'
) {
add_filter(
'woocommerce_product_description_heading',
'__return_null'
);
add_filter(
'woocommerce_product_additional_information_heading',
'__return_null'
);
}
}
add_action(
'woocommerce_before_single_product',
function() {
blocksy_manager()->get_hooks()->redirect_callbacks([
'token' => 'single_product_before_title',
'source' => ['woocommerce_single_product_summary'],
'destination' => 'blocksy:woocommerce:product-single:title:before',
'priority_min' => 2,
'priority_max' => 4
]);
blocksy_manager()->get_hooks()->redirect_callbacks([
'token' => 'single_product_after_title',
'source' => ['woocommerce_single_product_summary'],
'destination' => 'blocksy:woocommerce:product-single:title:after',
'priority_min' => 5,
'priority_max' => 10
]);
blocksy_manager()->get_hooks()->redirect_callbacks([
'token' => 'single_product_after_price',
'source' => ['woocommerce_single_product_summary'],
'destination' => 'blocksy:woocommerce:product-single:price:after',
'priority_min' => 11,
'priority_max' => 20
]);
blocksy_manager()->get_hooks()->redirect_callbacks([
'token' => 'single_product_after_excerpt',
'source' => ['woocommerce_single_product_summary'],
'destination' => 'blocksy:woocommerce:product-single:excerpt:after',
'priority_min' => 20,
'priority_max' => 30
]);
blocksy_manager()->get_hooks()->redirect_callbacks([
'token' => 'single_product_after_add_to_cart',
'source' => ['woocommerce_single_product_summary'],
'destination' => 'blocksy:woocommerce:product-single:add_to_cart:after',
'priority_min' => 30,
'priority_max' => 40
]);
blocksy_manager()->get_hooks()->redirect_callbacks([
'token' => 'single_product_after_meta',
'source' => ['woocommerce_single_product_summary'],
'destination' => 'blocksy:woocommerce:product-single:meta:after',
'priority_min' => 40,
'priority_max' => 50
]);
blocksy_manager()->get_hooks()->redirect_callbacks([
'token' => 'single_product_sharing',
'source' => ['woocommerce_share'],
'destination' => 'blocksy:woocommerce:product-single:layout:after'
]);
}
);
$product_view_type = blocksy_get_product_view_type();
if (
$product_view_type === 'default-gallery'
||
$product_view_type === 'stacked-gallery'
) {
add_action(
'woocommerce_single_product_summary',
function () {
blocksy_manager()->woocommerce->single->render_layout(
[
'defaults' => blocksy_get_woo_single_layout_defaults()
]
);
},
1
);
}
}, 9000000000);
add_action(
'woocommerce_after_single_product_summary',
function () {
do_action('blocksy:woocommerce:product-single:tabs:before');
},
9
);
add_action(
'woocommerce_after_single_product_summary',
function () {
do_action('blocksy:woocommerce:product-single:tabs:after');
},
11
);
add_action(
'woocommerce_before_single_product_summary',
function () {
global $blocksy_single_product_summary_buffering_started;
$blocksy_single_product_summary_buffering_started = true;
echo '<div class="product-entry-wrapper is-width-constrained">';
ob_start();
},
1
);
add_action('woocommerce_single_product_summary', function () {
global $blocksy_single_product_summary_buffering_started;
if (! $blocksy_single_product_summary_buffering_started) {
return;
}
$product_view_type = blocksy_get_product_view_type();
$content = ob_get_clean();
$prefix = blocksy_manager()->screen->get_prefix();
$deep_link_args = [
'prefix' => $prefix,
'suffix' => 'woo_product_elements',
'shortcut' => 'border'
];
$content = str_replace(
'class="summary',
blocksy_generic_get_deep_link($deep_link_args) . ' class="summary',
$content
);
if (
$product_view_type !== 'top-gallery'
&&
$product_view_type !== 'columns-top-gallery'
) {
$content = str_replace(
'entry-summary',
'entry-summary entry-summary-items',
$content
);
}
echo $content;
}, 0);
add_action(
'woocommerce_after_single_product_summary',
function () {
echo '</div>';
},
1
);
remove_action('woocommerce_after_single_product_summary', 'woocommerce_upsell_display', 15);
remove_action('woocommerce_after_single_product_summary', 'woocommerce_output_related_products', 20);
add_action(
'woocommerce_before_single_product',
function() {
blocksy_manager()->get_hooks()->redirect_callbacks([
'token' => 'single_product_after_ralated',
'source' => ['woocommerce_after_single_product'],
'destination' => 'blocksy:woocommerce:product-single:related:after',
]);
}
);
add_action(
'woocommerce_after_main_content',
function() {
blocksy_woo_single_product_after_main_content();
do_action('blocksy:woocommerce:product-single:related:after');
},
5
);
if (! function_exists('blocksy_woo_single_product_after_main_content')) {
function blocksy_woo_single_product_after_main_content() {
if (
! blocksy_manager()->screen->is_product()
||
blocksy_get_theme_mod('woo_has_related_upsells', 'yes') !== 'yes'
) {
return;
}
if (
blocksy_some_device(
blocksy_get_theme_mod(
'upsell_products_visibility',
[
'desktop' => true,
'tablet' => false,
'mobile' => false,
]
)
)
||
is_customize_preview()
) {
woocommerce_upsell_display();
}
if (
blocksy_some_device(blocksy_get_theme_mod(
'related_products_visibility',
[
'desktop' => true,
'tablet' => false,
'mobile' => false,
]
))
||
is_customize_preview()
) {
woocommerce_output_related_products();
}
}
}
add_filter('woocommerce_output_related_products_args', function ($args) {
$columns = intval(
blocksy_expand_responsive_value(
blocksy_get_theme_mod(
'woo_product_related_cards_columns',
[
'desktop' => 4,
'tablet' => 3,
'mobile' => 1
]
)
)['desktop']
);
$args['columns'] = $columns;
$args['posts_per_page'] = $columns * intval(blocksy_get_theme_mod(
'woo_product_related_cards_rows',
1
));
return $args;
}, 10);
add_filter('woocommerce_upsell_display_args', function ($args) {
$columns = intval(
blocksy_expand_responsive_value(
blocksy_get_theme_mod(
'woo_product_related_cards_columns',
[
'desktop' => 4,
'tablet' => 3,
'mobile' => 1
]
)
)['desktop']
);
$args['columns'] = $columns;
$args['posts_per_page'] = $columns * intval(blocksy_get_theme_mod(
'woo_product_related_cards_rows',
1
));
return $args;
}, 10);
add_filter('woocommerce_upsells_columns', function ($columns) {
return intval(
blocksy_expand_responsive_value(
blocksy_get_theme_mod(
'woo_product_related_cards_columns',
[
'desktop' => 4,
'tablet' => 3,
'mobile' => 1
]
)
)['desktop']
);
});
add_filter('comment_class', function ($classes, $class, $comment_id, $comment) {
if (! blocksy_manager()->screen->is_product()) {
return $classes;
}
$has_avatar = get_option('show_avatars', 1);
if ($has_avatar) {
$classes[] = 'ct-has-avatar';
}
return $classes;
}, 10, 4);