Skip to content

Instantly share code, notes, and snippets.

@andrewreal
Forked from ouija/functions.php
Last active October 29, 2020 14:18
Show Gist options
  • Save andrewreal/4afac95796cdfe4188d0cbbdca5273bf to your computer and use it in GitHub Desktop.
Save andrewreal/4afac95796cdfe4188d0cbbdca5273bf to your computer and use it in GitHub Desktop.
WooCommerce: Remove checkout field descriptions 'slideUp and hide' animations
<?
// WooCommerce has a stupid function in the ./assets/js/frontent/woocommerce.min.js file that hides/shows the 'description' elements
// for the checkout fields both when there is an onclick event on the document body, and when any field input is clicked.
//
// The offending code for this 'feature' is the following:
// i(document.body).on("click",function(){i(".woocommerce-input-wrapper span.description:visible").prop("aria-hidden",!0).slideUp(250)}),i(".woocommerce-input-wrapper").on("click",function(e){e.stopPropagation()}),i(".woocommerce-input-wrapper :input").on("keydown",function(e){var o=i(this).parent().find("span.description");if(27===e.which&&o.length&&o.is(":visible"))return o.prop("aria-hidden",!0).slideUp(250),e.preventDefault(),!1}).on("click focus",function(){var e=i(this).parent(),o=e.find("span.description");e.addClass("currentTarget"),i(".woocommerce-input-wrapper:not(.currentTarget) span.description:visible").prop("aria-hidden",!0).slideUp(250),o.length&&o.is(":hidden")&&o.prop("aria-hidden",!1).slideDown(250),e.removeClass("currentTarget")}),
//
// This doesn't work well with some addons like the Custom Checkout Fields plugin, where the description is show when the page
// loads, but then it hides wheneven the user clicks anywhere on the checkout page.
//
// Or sometimes you might not want this default behaviour to occur at all, and this code will disable it without having to
// edit the actual woocommerce.min.js file.
//
// Add the following code to your theme's functions.php file to disable this stupid feature once and for all!
function disable_woocommmerce_hide_description_checkout_fields() {
if (is_checkout()) {
wc_enqueue_js("
$(function() {
// Prevent WooCommerce hide description function that is bound to document.body
// Comment / disable next line to stop this affecting the Login and Coupon controls
//$(document.body).off( 'click');
// Prevent WooCommerce hide description function that is bound to inputs
$('.woocommerce-input-wrapper :input').off('click focus');
});
");
}
}
add_action('wp_enqueue_scripts', 'disable_woocommmerce_hide_description_checkout_fields');
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment