/** * Displays quick stats metabox */ public static function display_quick_stats_metabox() { global $post; $variations = Landing_Pages_Variations::get_variations($post->ID); $variations = array_filter($variations, 'is_numeric'); ?> <div> <style type="text/css"> </style> <div class="inside" id="a-b-testing"> <div id="bab-stat-box"> <?php if (isset($_GET['new_meta_key']) && is_numeric($_GET['new_meta_key'])) { ?> <script type="text/javascript"> jQuery(document).ready(function($) { /* This fixes meta data saves for cloned pages */ function isNumber (o) { return ! isNaN (o-0) && o !== null && o !== "" && o !== false; } var new_meta_key = "<?php echo $_GET['new_meta_key']; ?> "; jQuery('#template-display-options input[type=text], #template-display-options select, #template-display-options input[type=radio], #template-display-options textarea').each(function(){ var this_id = jQuery(this).attr("id"); var final_number = this_id.match(/[^-]+$/g); var new_id = this_id.replace(/[^-]+$/g, new_meta_key); var is_number = isNumber(final_number); if (is_number === false) { jQuery(this).attr("id", this_id + "-" + new_meta_key); jQuery(this).attr("name", this_id + "-" + new_meta_key); } else { jQuery(this).attr("id", new_id); jQuery(this).attr("name", new_id); } }); }); </script> <?php } $howmany = count($variations); foreach ($variations as $key => $vid) { $variation_status = Landing_Pages_Variations::get_variation_status($post->ID, $vid); $variation_status_class = $variation_status == 1 ? "variation-on" : 'variation-off'; $permalink = Landing_Pages_Variations::get_variation_permalink($post->ID, $vid); $impressions = Landing_Pages_Variations::get_impressions($post->ID, $vid); $conversions = Landing_Pages_Variations::get_conversions($post->ID, $vid); $conversion_rate = Landing_Pages_Variations::get_conversion_rate($post->ID, $vid); $title = Landing_Pages_Variations::get_main_headline($post->ID, $vid); ?> <div id="lp-variation-<?php echo Landing_Pages_Variations::vid_to_letter($post->ID, $key); ?> " class="bab-variation-row <?php echo $variation_status_class; ?> "> <div class='bab-varation-header'> <span class='bab-variation-name'><?php _e('Variation', 'landing-pages'); ?> <span class='bab-stat-letter'><?php echo Landing_Pages_Variations::vid_to_letter($post->ID, $key); ?> </span> <?php if ($variation_status != 1) { ?> <span class='is-paused'>(<?php _e('Paused', 'landing-pages'); ?> )</span> <?php } ?> </span> <span class="lp-delete-var-stats" data-letter='<?php echo Landing_Pages_Variations::vid_to_letter($post->ID, $key); ?> ' data-vid='<?php echo $vid; ?> ' rel='<?php echo $post->ID; ?> ' title="<?php _e('Delete this variations stats', 'landing-pages'); ?> "><?php _e('Clear Stats', 'landing-pages'); ?> </span> </div> <div class="bab-stat-row"> <div class='bab-stat-stats' colspan='2'> <div class='bab-stat-container-impressions bab-number-box'> <span class='bab-stat-span-impressions'><?php echo $impressions; ?> </span> <span class="bab-stat-id"><?php _e('Views', 'landing-pages'); ?> </span> </div> <div class='bab-stat-container-conversions bab-number-box'> <span class='bab-stat-span-conversions'><?php echo $conversions; ?> </span> <span class="bab-stat-id"><?php _e('Conversions', 'landing-pages'); ?> </span></span> </div> <div class='bab-stat-container-conversion_rate bab-number-box'> <span class='bab-stat-span-conversion_rate'><?php echo $conversion_rate; ?> </span> <span class="bab-stat-id bab-rate"><?php _e('Conversion Rate', 'landing-pages'); ?> </span> </div> <div class='bab-stat-control-container'> <span class='bab-stat-control-pause'><a title="<?php _e('Pause this variation', 'landing-pages'); ?> " href='?post=<?php echo $post->ID; ?> &action=edit&action-variation-id=<?php echo $vid; ?> &ab-action=pause-variation'><?php _e('Pause', 'landing-pages'); ?> </a></span> <span class='bab-stat-seperator pause-sep'>|</span> <span class='bab-stat-control-play'><a title="<?php _e('Turn this variation on', 'landing-pages'); ?> " href='?post=<?php echo $post->ID; ?> &action=edit&action-variation-id=<?php echo $vid; ?> &ab-action=play-variation'><?php _e('Play', 'landing-pages'); ?> </a></span> <span class='bab-stat-seperator play-sep'>|</span> <span class='bab-stat-menu-edit'><a title="<?php _e('Edit this variation', 'landing-pages'); ?> " href='?post=<?php echo $post->ID; ?> &action=edit&action-variation-id=<?php echo $vid; ?> '><?php _e('Edit', 'landing-pages'); ?> </a></span> <span class='bab-stat-seperator'>|</span> <span class='bab-stat-menu-preview'><a title="<?php _e('Preview this variation', 'landing-pages'); ?> " class='thickbox' href='<?php echo $permalink; ?> &iframe_window=on&post_id=<?php echo $post->ID; ?> &TB_iframe=true&width=1503&height=467' target='_blank'><?php _e('Preview', 'landing-pages'); ?> </a></span> <span class='bab-stat-seperator'>|</span> <span class='bab-stat-menu-clone'><a title="<?php _e('Clone this variation', 'landing-pages'); ?> " href='?post=<?php echo $post->ID; ?> &action=edit&new-variation=1&clone=<?php echo $vid; ?> &new_meta_key=<?php echo $howmany; ?> '><?php _e('Clone', 'landing-pages'); ?> </a></span> <span class='bab-stat-seperator'>|</span> <span class='bab-stat-control-delete'><a title="<?php _e('Delete this variation', 'landing-pages'); ?> " href='?post=<?php echo $post->ID; ?> &action=edit&action-variation-id=<?php echo $vid; ?> &ab-action=delete-variation'><?php _e('Delete', 'landing-pages'); ?> </a></span> </div> </div> </div> <div class="bab-stat-row"> <div class='bab-stat-menu-container'> <?php do_action('lp_ab_testing_stats_menu_post'); ?> </div> </div> </div> <?php } ?> </div> </div> </div> <?php }
/** * Stores click data */ public static function store_click($landing_page_id, $variation_id) { $conversions = Landing_Pages_Variations::get_conversions($landing_page_id, $variation_id); $conversions++; Landing_Pages_Variations::set_conversions_count($landing_page_id, $variation_id, $conversions); }
/** * Listens for new lead creation events and if the lead converted on a landing page then capture the conversion * @param $data */ public static function record_conversion($data) { if (!isset($data['page_id'])) { return; } $post = get_post($data['page_id']); if ($post) { $data['post_type'] = $post->post_type; } /* this filter is used by Inbound Pro to check if visitor's ip is on a not track list */ $do_not_track = apply_filters('inbound_analytics_stop_track', false); if ($do_not_track) { return; } /* increment conversions for landing pages */ if (isset($data['post_type']) && $data['post_type'] === 'landing-page') { $conversions = Landing_Pages_Variations::get_conversions($data['page_id'], $data['variation']); $conversions++; Landing_Pages_Variations::set_conversions_count($data['page_id'], $data['variation'], $conversions); } else { $conversions = Inbound_Content_Statistics::get_conversions_count($data['page_id']); $conversions++; Inbound_Content_Statistics::set_conversions_count($data['page_id'], $conversions); } return $data; }
/** * Returns conversion rate for given cta and variation id * * @param INT $landing_page_id id of call to action * @param INT $variation_id id of variation belonging to call to action * * @return INT conversion rate */ public static function get_conversion_rate($landing_page_id, $variation_id) { $impressions = Landing_Pages_Variations::get_impressions($landing_page_id, $variation_id); $conversions = Landing_Pages_Variations::get_conversions($landing_page_id, $variation_id); if ($impressions > 0) { $conversion_rate = $conversions / $impressions; $conversion_rate_number = $conversion_rate * 100; $conversion_rate_number = round($conversion_rate_number, 2); $conversion_rate = $conversion_rate_number; } else { $conversion_rate = 0; } return $conversion_rate; }