Plugin Directory

Changeset 3062036


Ignore:
Timestamp:
04/01/2024 11:09:16 AM (2 years ago)
Author:
pushalert
Message:

Added targeting based on cart value, products in cart, discount on cart, product customer viewing and customer buying history.

Location:
pushalert-onsite-messaging
Files:
4 added
6 edited

Legend:

Unmodified
Added
Removed
  • pushalert-onsite-messaging/trunk/pushalert-onsite-messaging.php

    r2598764 r3062036  
    66 * Author: PushAlert
    77 * Author URI: https://pushalert.co/onsite-messaging
    8  * Version: 1.0.0
     8 * Version: 1.1.0
    99 */
    1010
     
    1616add_filter('plugin_action_links_' . plugin_basename(__FILE__), 'pa_onsite_messaging_settings_link');
    1717
    18 //For options related to WooCommerce
     18if (pa_onsite_messaging_woocommerce_enabled()) {
     19    add_action('wp_footer', 'get_pa_onsite_cart_info');
     20}
    1921/*if (pa_onsite_messaging_woocommerce_version_check()) {
    2022    if(get_option('_onsite_messaging_report_sales', 0)){
     
    157159}
    158160
    159 /*function pa_onsite_messaging_woocommerce_version_check( $version = '2.6' ) {
     161function pa_onsite_messaging_woocommerce_enabled(){
     162    $is_enable = in_array('woocommerce/woocommerce.php', apply_filters( 'active_plugins', get_option('active_plugins')));
     163    return $is_enable;
     164}
     165
     166function get_pa_onsite_cart_info(){
     167    if(pa_onsite_messaging_woocommerce_enabled()){
     168        $pa_onsite_cart_info = [];
     169       
     170        $item_details = WC()->cart->cart_contents;
     171        $product_ids = [];
     172        $product_variant_ids = [];
     173        foreach($item_details as $key=>$data){
     174            $product_ids[] = $data['product_id'];
     175            if($data['variation_id']!=0){
     176                $product_variant_ids[] = $data['variation_id'];             
     177            }
     178            else{
     179                $product_variant_ids[] = $data['product_id'];
     180            }
     181        }
     182       
     183        $total_items = WC()->cart->get_cart_contents_count();
     184        $pa_onsite_cart_info['cti'] = WC()->cart->get_cart_contents_count();
     185        $pa_onsite_cart_info['ctp'] = WC()->cart->get_cart_contents_total();
     186        $pa_onsite_cart_info['cd'] = WC()->cart->get_cart_discount_total();
     187        $pa_onsite_cart_info['pic'] = implode(",", $product_ids);
     188        $pa_onsite_cart_info['pvic'] = implode(",", $product_variant_ids);
     189       
     190        $curr_user_id = get_current_user_id();
     191        if(!$curr_user_id){
     192            $pa_onsite_cart_info['li'] = false;
     193            $pa_onsite_cart_info['oc'] = 0;
     194            $pa_onsite_cart_info['ts'] = 0;
     195            $pa_onsite_cart_info['ms'] = true;
     196            $pa_onsite_cart_info['ct'] = "";
     197        }
     198        else{
     199            $customer = new WC_Customer( $curr_user_id );
     200            $pa_onsite_cart_info['li'] = true;
     201            $pa_onsite_cart_info['oc'] = $customer->get_order_count();
     202            $pa_onsite_cart_info['ts'] = $customer->get_total_spent();
     203            $pa_onsite_cart_info['ms'] = true;
     204            $pa_onsite_cart_info['ct'] = "";
     205        }
     206       
     207        if(is_product()){
     208            global $product;
     209            if(pa_woocommerce_version_check()){
     210                $product_id = $product->get_id();
     211            }
     212            else{
     213                $product_id = $product->id;
     214            }
     215            $cart_url = apply_filters( 'woocommerce_get_cart_url', wc_get_page_permalink( 'cart' ) );
     216            $pa_onsite_product_info =
     217                array(
     218                    'pi'=>$product_id,
     219                    'pa' => $product->is_in_stock(),
     220                    "pp" => $product->get_display_price(),
     221                    'pfi' => wp_get_attachment_url($product->get_image_id()),
     222                    'pt' =>strip_tags($product->get_categories()),
     223                    'pta'=>strip_tags($product->get_tags()),
     224                    'pve'=>"",
     225                    'ptype' => $product->get_type()
     226                );
     227            if ( $product->is_type( 'variable' ) ) {
     228
     229                // Get variations
     230                $product_variations = new WC_Product_Variable( $product_id );
     231                $variations = $product_variations->get_available_variations();
     232               
     233                $variations_data = [];
     234                // Loop through each variation
     235                foreach ($variations as $variation ) {
     236                    $variations_data[] = array(
     237                        "pi" => $variation['variation_id'],
     238                        "vp" => $variation['display_price'],
     239                        "vimg" => wp_get_attachment_url( $variation['image_id']),
     240                        "va" => $variation['is_in_stock'],
     241                    );
     242                }
     243                $pa_onsite_product_info['pv'] = $variations_data;
     244            }
     245            else{
     246                $pa_onsite_product_info['pv'] =[
     247                    [
     248                        "pi" => $product_id,
     249                        "vp" => $product->get_display_price(),
     250                        "vimg" => wp_get_attachment_url($product->get_image_id()),
     251                        "va" => $product->is_in_stock(),
     252                    ]
     253                ];
     254            }
     255            $pa_onsite_cart_info = array_merge($pa_onsite_cart_info, $pa_onsite_product_info);
     256        }
     257       
     258        echo '<script>var pa_onsite_ecomm_type = "woocommerce";var pa_onsite_cart_info = '.json_encode($pa_onsite_cart_info).';</script>';
     259    }
     260}
     261
     262function pa_onsite_messaging_woocommerce_version_check( $version = '2.6' ) {
    160263    global $woocommerce;
    161264    if( version_compare( $woocommerce->version, $version, ">=" ) ) {
     
    165268        return false;
    166269    }
    167 }*/
     270}
    168271
    169272function pa_onsite_messaging_on_order_placed($order_id) { //When user places an order
     
    180283}
    181284
     285add_filter('woocommerce_rest_prepare_product_object', 'custom_change_product_response', 20, 3);
     286//add_filter('woocommerce_rest_prepare_product_variation_object', 'custom_change_product_response', 20, 3);
     287
     288function custom_change_product_response($response, $object, $request) {
     289    $variations = $response->data['variations'];
     290   
     291    $variations_array = array();
     292    if (!empty($variations) && is_array($variations)) {
     293        foreach ($variations as $variation) {
     294            $variations_res = array();
     295            $variation_id = $variation;
     296            $variation = new WC_Product_Variation($variation_id);
     297            $variations_res['id'] = $variation_id;
     298            $variations_res['on_sale'] = $variation->is_on_sale();
     299            $variations_res['regular_price'] = (float)$variation->get_regular_price();
     300            $variations_res['sale_price'] = (float)$variation->get_sale_price();
     301            $variations_res['price'] = (float)$variation->get_price();
     302            $variations_res['sku'] = $variation->get_sku();
     303            $variations_res['quantity'] = $variation->get_stock_quantity();
     304            if ($variations_res['quantity'] == null) {
     305                $variations_res['quantity'] = '';
     306            }
     307            $variations_res['stock_status'] = $variation->get_stock_status();
     308           
     309            $variations_res['image'] = wp_get_attachment_url($variation->get_image_id());
     310            $variations_res['name'] = $variation->get_name();
     311
     312            $attributes = array();
     313            // variation attributes
     314            foreach ( $variation->get_variation_attributes() as $attribute_name => $attribute ) {
     315                // taxonomy-based attributes are prefixed with `pa_`, otherwise simply `attribute_`
     316                $attributes[] = array(
     317                    'name'   => wc_attribute_label( str_replace( 'attribute_', '', $attribute_name ), $variation ),
     318                    'slug'   => str_replace( 'attribute_', '', wc_attribute_taxonomy_slug( $attribute_name ) ),
     319                    'option' => $attribute,
     320                );
     321            }
     322
     323            $variations_res['attributes'] = $attributes;
     324            $variations_array[] = $variations_res;
     325        }
     326    }
     327    $response->data['product_variations'] = $variations_array;
     328
     329    return $response;
     330}
    182331?>
  • pushalert-onsite-messaging/trunk/readme.txt

    r2984951 r3062036  
    1 === Onsite Messaging by PushAlert - Exit Intent Popups, Email Optins ===
     1=== Onsite Messaging by PushAlert - Exit Intent Popups, Email Optins, Discount Overlays ===
    22Contributors: PushAlert
    33Donate link: https://pushalert.co/
    4 Tags: pushalert, onsite messaging, popups, exit intent popups, recover abandoned cart, woocommerce, web overlays, email optins, email list builder
     4Tags: onsite messaging, popups, exit intent popups, recover abandoned cart, woocommerce, web overlays, email optins, email list builder
    55Requires at least: 2.7
    6 Tested up to: 6.4
     6Tested up to: 6.5
    77Requires PHP: 5.6
    8 Stable tag: 1.0.0
     8Stable tag: 1.1.0
    99License: GPLv2 or later
    1010License URI: http://www.gnu.org/licenses/gpl-2.0.html
     
    3131
    3232= EASY SEGMENTATION =
    33 Personalize your messaging to online users with advanced on-page segmentation. Target users based on their current behavior including pages visited, traffic source, cookies and session details.
     33Personalize your messaging to online users with advanced on-page segmentation. Target users based on their current behavior including pages visited, traffic source, cookies and session details. For WooCommerce, identify target customers through dynamic segmentation leveraging parameters such as current cart value, product selections, and individual purchasing history for tailored marketing strategies.
    3434
    3535
     
    7272== Screenshots ==
    73731. PushAlert - Onsite Messaging for WordPress and WooCommerce
    74 2. Campaign Types - LightBox Popup, Fullscreen, Countdown, Floating Bars and more
    75 3. Exit Intent Popup
    76 4. Fullscreen Popup
    77 5. Spin 2 Win (Fortune Wheel) Popup
     742. Grow Email List
     753. Reduce Abandonment
     764. Discounts and Coupons
     775. Cross-sell and Upsell Products
     786. Various Popup Examples
     797. Campaign Types - LightBox Popup, Fullscreen, Countdown, Floating Bars and more
     808. Exit Intent Popup Demo
     81== Changelog ==
    7882
    79 == Changelog ==
     83= 1.1.0 =
     84* Added targeting based on cart value, products in cart, discount on cart, product customer viewing and customer buying history.
    8085
    8186= 1.0 =
Note: See TracChangeset for help on using the changeset viewer.