• Hi,

    It’s a bit far-fetched but is it possible to trigger YITH Quick View on Choose Variation button (in my case Select Options) in Ajax Search Pro (ASP) results? ASP provided following code to display the Add to Cart Button in product search results:

    add_filter('asp_results', 'asp_add_to_cart_data', 1, 1);
    function asp_add_to_cart_data($results) {
        $product_add_to_cart_text   = 'Add to cart';
        $variation_add_to_cart_text = 'Select Options';   // Leave it empty to not display at all
        
        if (class_exists("WooCommerce")) {
            $_pf = new WC_Product_Factory();
            foreach ($results as &$r) {
                if (
                $r->content_type = "cpt" &&
                    in_array($r->post_type, array("product", "product_variation"))
                ) {
                    $product = $_pf->get_product($r->id);
                    $is_variable = $product->is_type( 'variable' ) || $r->post_type == 'product_variation';
                    $link = !$is_variable ? get_permalink(wc_get_page_id('shop')) : $product->get_permalink(); 
                    $ajax = !$is_variable ? ' ajax_add_to_cart' : ''; 
                    $text = !$is_variable ? $product_add_to_cart_text : $variation_add_to_cart_text;
                    if ( empty($text) )
                        continue;
                    ob_start();
                    ?>
                    <div class="woocommerce">
    					<a href="<?php echo $link; ?>"
                           data-quantity="1"
                           class="button product_type_simple add_to_cart_button<?php echo $ajax; ?>"
                           data-product_id="<?php echo $r->id; ?>" data-product_sku=""
                           rel="nofollow"><?php echo $text; ?></a>
                    </div>
                    <?php
                    $button = ob_get_clean();
                    $r->content .= $button;
                }
            }
        }
        return $results;
    }
    add_action('wp_footer', 'asp_add_to_cart_handler');
    function asp_add_to_cart_handler() {
        ?>
        <script>
        jQuery(function(t){if("undefined"==typeof wc_add_to_cart_params)return!1;var a=function(){t(".asp_r").on("click",".add_to_cart_button",this.onAddToCart).on("click",".remove_from_cart_button",this.onRemoveFromCart).on("added_to_cart",this.updateButton).on("added_to_cart",this.updateCartPage).on("added_to_cart removed_from_cart",this.updateFragments)};a.prototype.onAddToCart=function(a){var o=t(this);if(o.is(".ajax_add_to_cart")){if(!o.attr("data-product_id"))return!0;a.preventDefault(),o.removeClass("added"),o.addClass("loading");var r={};t.each(o.data(),function(t,a){r[t]=a}),t(document.body).trigger("adding_to_cart",[o,r]),t.post(wc_add_to_cart_params.wc_ajax_url.toString().replace("%%endpoint%%","add_to_cart"),r,function(a){a&&(a.error&&a.product_url?window.location=a.product_url:"yes"!==wc_add_to_cart_params.cart_redirect_after_add?t(document.body).trigger("added_to_cart",[a.fragments,a.cart_hash,o]):window.location=wc_add_to_cart_params.cart_url)})}},a.prototype.onRemoveFromCart=function(a){var o=t(this),r=o.closest(".woocommerce-mini-cart-item");a.preventDefault(),r.block({message:null,overlayCSS:{opacity:.6}}),t.post(wc_add_to_cart_params.wc_ajax_url.toString().replace("%%endpoint%%","remove_from_cart"),{cart_item_key:o.data("cart_item_key")},function(a){a&&a.fragments?t(document.body).trigger("removed_from_cart",[a.fragments,a.cart_hash,o]):window.location=o.attr("href")}).fail(function(){window.location=o.attr("href")})},a.prototype.updateButton=function(a,o,r,e){(e=void 0!==e&&e)&&(e.removeClass("loading"),e.addClass("added"),wc_add_to_cart_params.is_cart||0!==e.parent().find(".added_to_cart").length||e.after(' <a href="'+wc_add_to_cart_params.cart_url+'" class="added_to_cart wc-forward" title="'+wc_add_to_cart_params.i18n_view_cart+'">'+wc_add_to_cart_params.i18n_view_cart+"</a>"),t(document.body).trigger("wc_cart_button_updated",[e]))},a.prototype.updateCartPage=function(){var a=window.location.toString().replace("add-to-cart","added-to-cart");t(".shop_table.cart").load(a+" .shop_table.cart:eq(0) > *",function(){t(".shop_table.cart").stop(!0).css("opacity","1").unblock(),t(document.body).trigger("cart_page_refreshed")}),t(".cart_totals").load(a+" .cart_totals:eq(0) > *",function(){t(".cart_totals").stop(!0).css("opacity","1").unblock(),t(document.body).trigger("cart_totals_refreshed")})},a.prototype.updateFragments=function(a,o){o&&(t.each(o,function(a){t(a).addClass("updating").fadeTo("400","0.6").block({message:null,overlayCSS:{opacity:.6}})}),t.each(o,function(a,o){t(a).replaceWith(o),t(a).stop(!0).css("opacity","1").unblock()}),t(document.body).trigger("wc_fragments_loaded"))},new a});
        </script>
        <?php
    }

    Is it possible to only trigger Quick View on Variable Products?

    Search examples for variable products on the site: Pizza, Burger.

    Thank you!

    The page I need help with: [log in to see the link]

Viewing 3 replies - 1 through 3 (of 3 total)
  • Hi! I know this doesn’t come to the subject but….is your “add to cart” snippet code working now with ajax search pro?

    Mine stopped working on my site a couple of days ago, I don’t know what could have happened. I’m just checking if it was only on my site. Maybe the WordPress update? No idea really…

    Thanks!

    Thread Starter usmanminhas

    (@usmanminhas)

    Hi, yes it is working perfectly as it should on my site. All plugins and WordPress are up to date.

    Plugin Author YITHEMES

    (@yithemes)

    Hi @usmanminhas,
    would you show the quick view button only for variable products?

Viewing 3 replies - 1 through 3 (of 3 total)
  • The topic ‘Compatibility with Ajax Search Pro’ is closed to new replies.