WordPress

wtyczki — należy dodać niestandardowe dane pozycji w koszyku

  • 6 grudnia, 2023
  • 4 min read
wtyczki — należy dodać niestandardowe dane pozycji w koszyku


Muszę utworzyć niestandardową karuzelę produktów Elementor. Z tej karuzeli znajduje się pole daty. Użytkownik może wybrać datę i dodać produkt do koszyka. Wybrana data zostanie wyświetlona jako „preferowana data” w metadanych. Ale niestety nie mogę zapisać i wyświetlić daty w metadanych produktu, oto kod

<div class="ark_item">
<div class="ark_single_item">
    <?php if (isset($settings['display_image']) && ($settings['display_image'] == 'yes')) { ?>
        <div class="ark_thumbnail">
            <a href="<?php echo esc_url(get_permalink($product->get_id())); ?>">
                <?php
                if ($thumbnail_id) {
                    $image_src = \Elementor\Group_Control_Image_Size::get_attachment_image_src($thumbnail_id, 'thumbnail_size', $settings);
                    echo sprintf('<img src="%s" title="%s" alt="%s"%s />', esc_attr($image_src), get_the_title($thumbnail_id), ark_get_attachment_alt($thumbnail_id), '');
                }
                ?>
            </a>
        </div>
    <?php } ?>
    <div class="ark_content">
        <div class="ark_title">
            <h2 style="text-align: <?php echo isset($settings['title_text_align']) ? esc_attr($settings['title_text_align']) : ''; ?>">
                <a href="<?php echo esc_url($product->get_permalink()); ?>"><?php echo esc_html($product->get_title()); ?></a>
            </h2>
        </div>
        <div class="ark_description">
            <?php if ($display_rating == 'yes') { ?>
                <div class="ark-rating">
                    <?php
                    if ('no' !== get_option('woocommerce_enable_review_rating')) {
                        $rating_count = $product->get_rating_count();
                        $review_count = $product->get_review_count();
                        $average = $product->get_average_rating();
                        $product_id = $product->get_id();
                    ?>
                        <div class="ark-rating-icons">
                            <?php echo ark_display_product_rating($average, $rating_count, $product_id); ?>
                        </div>
                    <?php } ?>
                </div>
            <?php } ?>
            <?php if ($display_price == 'yes') { ?>
                <div class="ark_price">
                    <?php echo $product->get_price_html(); ?>
                </div>
            <?php } ?>
            <div class="ark_date">
                <input type="date" name="selected_date" id="selected_date_<?php echo esc_attr($product->get_id()); ?>">
            </div>
            <div class="ark_quantity">
                <!-- Default Quantity Input -->
                <div class="quantity">
                    <?php
                    $input_args = apply_filters('woocommerce_quantity_input_args', array(
                        'input_id' => 'adult_quantity_' . esc_attr($product->get_id()),
                        'input_name' => 'adult_quantity',
                        'input_value' => isset($_POST['adult_quantity']) ? wc_stock_amount($_POST['adult_quantity']) : 1,
                        'classes' => apply_filters('woocommerce_quantity_input_classes', array('input-text', 'qty', 'text'), $product),
                        'max_value' => apply_filters('woocommerce_quantity_input_max', $product->get_max_purchase_quantity(), $product),
                        'min_value' => apply_filters('woocommerce_quantity_input_min', $product->get_min_purchase_quantity(), $product),
                        'step' => apply_filters('woocommerce_quantity_input_step', 1, $product),
                        'pattern' => apply_filters('woocommerce_quantity_input_pattern', has_filter('wc_stock_amount', 'wc_stock_amount') ? '[0-9]*' : ''),
                        'inputmode' => apply_filters('woocommerce_quantity_input_inputmode', has_filter('wc_stock_amount', 'wc_stock_amount') ? 'numeric' : ''),
                    ), $product);

                    woocommerce_quantity_input($input_args);
                    ?>
                </div>
            </div>
            <div class="ark_cartbtn">
                <div class="ark-add-to-cart">
                    <?php
                    // Default quantity is adult_quantity
                    $default_quantity = isset($_POST['adult_quantity']) ? wc_stock_amount($_POST['adult_quantity']) : 1;

                    // Add the product to the cart
                    $cart_item_key = WC()->cart->add_to_cart($product->get_id(), $default_quantity, 0, array(), array('selected_date' => $selected_date));

                    echo sprintf(
                        '<a href="%s" data-quantity="%s" class="%s" %s>%s</a>',
                        esc_url(wc_get_cart_url()),
                        esc_attr($default_quantity),
                        esc_attr(implode(' ', array_filter(array(
                            'button', 'product_type_' . $product->get_type(),
                            $product->is_purchasable() && $product->is_in_stock() ? 'add_to_cart_button' : '',
                            $product->supports('ajax_add_to_cart') ? 'ajax_add_to_cart' : '',
                            'ark_add_to_cart_btn'
                        )))),
                        wc_implode_html_attributes(array(
                            'data-product_id' => $product->get_id(),
                            'data-product_sku' => $product->get_sku(),
                            'aria-label' => $product->add_to_cart_description(),
                            'rel' => 'nofollow',
                        )),
                        esc_html($product->add_to_cart_text())
                    );
                    ?>
                </div>
            </div>
        </div>
    </div>
</div>

Nie mogę stąd dodać wybranej daty do sesji woocommerce na stronie koszyka. Wasza pomoc może być dla mnie pomocna…

Warto przeczytać!  Jak stworzyć galerię obrazów produktu WooCommerce (krok po kroku)


Źródło