Files
2026-03-05 13:07:40 +01:00

197 lines
6.2 KiB
PHP

<?php
/**
* Settings | WooCommerce
*
* @package Dotspice
* @version 1.3.0
*/
if (class_exists('woocommerce')) {
/**
* Include Sripts & Styles
*/
function dotspice_woo_scripts()
{
// Dequeue Scripts
// wp_dequeue_script('select2');
// wp_deregister_script('select2');
// wp_dequeue_script('selectWoo');
// wp_deregister_script('selectWoo');
// Enqueue Scripts
wp_enqueue_script('woocommerce-script', get_template_directory_uri() . '/js/woocommerce-script.js', array(), filemtime(get_template_directory() . '/js/woocommerce-script.js'), true);
}
add_action('wp_enqueue_scripts', 'dotspice_woo_scripts');
/**
* Provide an edit link for WooCommerce Archive.
*/
function dotspice_woo_admin_bar_edit_menu($wp_admin_bar)
{
if (!is_admin() && is_shop()) {
$page_ID = wc_get_page_id('shop');
if (current_user_can('edit_post', $page_ID)) {
$wp_admin_bar->add_node(
array(
'id' => 'edit',
'title' => __('Edit Page'),
'href' => get_edit_post_link($page_ID),
)
);
}
}
}
add_action('admin_bar_menu', 'dotspice_woo_admin_bar_edit_menu', 80);
// Disable styles
add_filter('woocommerce_enqueue_styles', '__return_empty_array');
// Add theme support
function dotspice_woo_support()
{
add_theme_support('woocommerce', array(
'thumbnail_image_width' => 1500,
'single_image_width' => 800,
'gallery_thumbnail_image_width' => 150,
'cart_item_thumbnail' => 100,
'product_grid' => array(
'default_rows' => 4,
'min_rows' => 2,
'max_rows' => 8,
'default_columns' => 3,
'min_columns' => 1,
'max_columns' => 4,
),
));
add_theme_support('wc-product-gallery-lightbox');
add_theme_support('wc-product-gallery-slider');
}
add_action('after_setup_theme', 'dotspice_woo_support', 99);
// Disable page title
add_filter('woocommerce_show_page_title', '__return_false');
// Disable result count
// remove_action('woocommerce_before_shop_loop', 'woocommerce_result_count', 20);
// Disable breadcrumb
remove_action('woocommerce_before_main_content', 'woocommerce_breadcrumb', 20, 0);
// Unset ship to different address checked
add_filter('woocommerce_ship_to_different_address_checked', '__return_false');
// Update Cart Count on Fragments
function dotspice_woo_cart_count_fragments($fragments)
{
$cart_count = WC()->cart->get_cart_contents_count();
$fragments['.navbar-btn.mini-cart .count'] = '<span class="count" data-count="' . $cart_count . '">' . $cart_count . '</span>';
return $fragments;
}
add_filter('woocommerce_add_to_cart_fragments', 'dotspice_woo_cart_count_fragments', 10, 1);
// Plus & minus button
function dotspice_woo_single_quantity()
{
?>
<div class="quantity-buttons">
<button type="button" class="quantity-buttons__plus plus">+</button>
<button type="button" class="quantity-buttons__minus minus">-</button>
</div>
<?php
}
add_action('woocommerce_after_add_to_cart_quantity', 'dotspice_woo_single_quantity');
// Plus & minus button on Cart
function dotspice_woo_cart_item_quantity($product_quantity, $cart_item_key)
{
ob_start();
dotspice_woo_single_quantity();
$quantity_buttons = ob_get_clean();
return $product_quantity . $quantity_buttons;
}
add_filter('woocommerce_cart_item_quantity', 'dotspice_woo_cart_item_quantity', 10, 2);
// Products search form
function dotspice_woo_product_search_form($form)
{
ob_start();
echo do_shortcode('[fibosearch]');
$form_html = ob_get_clean();
return $form_html;
}
add_filter('get_product_search_form', 'dotspice_woo_product_search_form');
//Exclude products from WordPress Search
function searchFilter($query)
{
if ($query->is_search) {
if (!isset($query->query_vars['post_type'])) {
$query->set('post_type', array('post', 'page'));
}
}
return $query;
}
add_filter('pre_get_posts', 'searchFilter');
// Transfer product data tabs
remove_action('woocommerce_after_single_product_summary', 'woocommerce_output_product_data_tabs', 10);
add_action('woocommerce_single_product_summary', 'woocommerce_output_product_data_tabs', 80);
// Remove product tab headers
add_filter('woocommerce_product_description_heading', '__return_empty_string');
add_filter('woocommerce_product_additional_information_heading', '__return_empty_string');
// Remove sidebar on single product
remove_action('woocommerce_sidebar', 'woocommerce_get_sidebar', 10);
// Remove content wrappers
remove_action('woocommerce_before_main_content', 'woocommerce_output_content_wrapper', 10);
remove_action('woocommerce_after_main_content', 'woocommerce_output_content_wrapper_end', 10);
// Remove loop product link close
remove_action('woocommerce_after_shop_loop_item', 'woocommerce_template_loop_product_link_close', 5);
// Replace Mini cart buttons
add_action('woocommerce_widget_shopping_cart_buttons', function () {
// Removing Buttons
remove_action('woocommerce_widget_shopping_cart_buttons', 'woocommerce_widget_shopping_cart_button_view_cart', 10);
remove_action('woocommerce_widget_shopping_cart_buttons', 'woocommerce_widget_shopping_cart_proceed_to_checkout', 20);
// Adding customized Buttons
add_action('woocommerce_widget_shopping_cart_buttons', 'dotspice_woo_widget_shopping_cart_button_view_cart', 10);
add_action('woocommerce_widget_shopping_cart_buttons', 'dotspice_woo_widget_shopping_cart_proceed_to_checkout', 20);
}, 1);
function dotspice_woo_widget_shopping_cart_button_view_cart()
{
echo '<a href="' . wc_get_cart_url() . '" class="button wc-forward">' . dotspice_get_svg_icon('shopping-cart-fa-solid', 'html', array('size' => false, 'style' => false)) . esc_html__('View cart', 'woocommerce') . '</a>';
}
function dotspice_woo_widget_shopping_cart_proceed_to_checkout()
{
echo '<a href="' . wc_get_checkout_url() . '" class="button checkout wc-forward">' . dotspice_get_svg_icon('check-square-fa-solid', 'html', array('size' => false, 'style' => false)) . esc_html__('Checkout', 'woocommerce') . '</a>';
}
/**
* Change number of related products output
*/
function dotspice_woo_related_products_args($args)
{
$args['posts_per_page'] = 3;
$args['columns'] = 3;
return $args;
}
add_filter('woocommerce_output_related_products_args', 'dotspice_woo_related_products_args', 20);
}