Funkcja dodaje obsługę wymaganego założenia konta dla wybranych produktów o określonych identyfikatorach ID. Możesz dostosować te identyfikatory według swoich potrzeb, zmieniając je w zmiennej $products_to_check. Gdy jeden z tych produktów zostanie dodany do koszyka, na stronie zamówienia formularz rejestracji zostanie wyświetlony, a zakładanie konta będzie wymagane. W przeciwnym razie formularz rejestracji będzie ukryty.
// Lista ID produktów, dla których wymagane jest założenie konta $products_to_check = array( 1067, 1522, 1529, 1530 ); // Dodaj skrypt JavaScript do strony function enqueue_custom_js() { wp_enqueue_script( 'custom_js', get_stylesheet_directory_uri() . '/custom.js', array( 'jquery' ), '1.0', true ); } add_action( 'wp_enqueue_scripts', 'enqueue_custom_js' ); // Dodaj dane o wybranych produktach do skryptu JavaScript function add_required_account_product_ids_to_js() { global $products_to_check; wp_localize_script( 'custom_js', 'required_account_products', $products_to_check ); } add_action( 'wp_footer', 'add_required_account_product_ids_to_js', 30 ); // Dodaj kod JavaScript w tagach <script> function add_inline_js() { global $products_to_check; echo ' <script> jQuery(document).ready(function($) { function is_product_in_cart() { let cart = JSON.parse(localStorage.getItem("woocommerce_cart")); let cartContents = cart.items; let isProductInCart = false; cartContents.forEach(function(cartItem) { if (' . json_encode($products_to_check) . '.includes(cartItem.id)) { isProductInCart = true; return; } }); return isProductInCart; } function show_or_hide_registration_form() { if (is_product_in_cart()) { $(".woocommerce-form-register").show(); $(".create-account").prop("checked", true); } else { $(".woocommerce-form-register").hide(); $(".create-account").prop("checked", false); } } show_or_hide_registration_form(); $("input.create-account").on("change", show_or_hide_registration_form); }); </script> '; } add_action( 'wp_footer', 'add_inline_js', 40 );
Elementy kodu:
- $products_to_check: Zmienna zawierająca tablicę identyfikatorów produktów, dla których wymagane jest założenie konta. Możesz zmieniać zawartość tej tablicy, aby dostosować identyfikatory produktów.
- enqueue_custom_js(): Funkcja dodająca skrypt JavaScript do strony.
- add_required_account_product_ids_to_js(): Funkcja przekazująca dane o wybranych produktach do skryptu JavaScript.
- add_inline_js(): Funkcja dodająca kod JavaScript bezpośrednio w tagach <script> na stronie.
- is_product_in_cart(): Funkcja JavaScript sprawdzająca, czy którykolwiek z wybranych produktów znajduje się w koszyku.
- show_or_hide_registration_form(): Funkcja JavaScript kontrolująca widoczność formularza rejestracji w zależności od zawartości koszyka.
- $(„input.create-account”).on(„change”, show_or_hide_registration_form): Przypisanie zdarzenia zmiany wartości checkboxa „Utwórz konto” do funkcji show_or_hide_registration_form.
Właściwości:
- Działa na stronie zamówienia WooCommerce.
- Wymaga założenia konta, gdy wybrane produkty są w koszyku.
- Działa dynamicznie, automatycznie wyświetlając lub ukrywając formularz rejestracji na podstawie zawartości koszyka.
- Możliwość dostosowania identyfikatorów produktów, dla których wymagane jest założenie konta.
- Możliwość łatwego rozszerzenia, aby obsługiwać dodatkowe warunki lub funkcje.