...

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:

  1. $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.
  2. enqueue_custom_js(): Funkcja dodająca skrypt JavaScript do strony.
  3. add_required_account_product_ids_to_js(): Funkcja przekazująca dane o wybranych produktach do skryptu JavaScript.
  4. add_inline_js(): Funkcja dodająca kod JavaScript bezpośrednio w tagach <script> na stronie.
  5. is_product_in_cart(): Funkcja JavaScript sprawdzająca, czy którykolwiek z wybranych produktów znajduje się w koszyku.
  6. show_or_hide_registration_form(): Funkcja JavaScript kontrolująca widoczność formularza rejestracji w zależności od zawartości koszyka.
  7. $(„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.

Nie znalazłeś funkcji, która Cię interesuje?
Napisz do mnie.

Zostaw komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *