PluginProbe
Visual Website Optimizer / 2.8
Visual Website Optimizer v2.8
trunk 1.0 2.0 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 3.0 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 4.0 4.1 4.10 All 37 releases
visual-web-optimizer / visual-website-optimizer.php

visual-website-optimizer.php in Visual Website Optimizer 2.8, at visual-website-optimizer.php

165 lines 8.9 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /*
3 Plugin Name: VWO
4 Plugin URI: https://vwo.com/
5 Description: VWO is the all-in-one platform that helps you conduct visitor research, build an optimization roadmap, and run continuous experimentation. Simply enable the plugin and start running tests on your Wordpress website without doing any other code changes. Visit <a href="https://vwo.com/">Visual Website Optimizer</a> for more details.
6 Author: Wingify
7 Version: 2.8
8 visual-website-optimizer.php
9 Author URI: https://wingify.com
10
11 This relies on the actions being present in the themes header.php and footer.php
12 * header.php code before the closing </head> tag
13 * wp_head();
14 *
15 */
16
17 //------------------------------------------------------------------------//
18 //---Config---------------------------------------------------------------//
19 //------------------------------------------------------------------------//
20
21 $clhf_header_script_sync = '
22 <!-- Start VWO Code -->
23 <script type=\'text/javascript\'>
24 var _vis_opt_account_id = VWO_ID;
25 var _vis_opt_protocol = ((\'https:\' == document.location.protocol) ? \'https://\' : \'http://\');
26 document.write(\'<s\' + \'cript src="\' + _vis_opt_protocol + \'dev.visualwebsiteoptimizer.com/deploy/js_visitor_settings.php?v=1&a=\'+_vis_opt_account_id+\'&url=\'+encodeURIComponent(document.URL)+\'&random=\'+Math.random()+\'" type="text/javascript">\' + \'<\/s\' + \'cript>\');
27 </script>
28 <script type=\'text/javascript\'>
29 if(typeof(_vis_opt_settings_loaded) == "boolean") { document.write(\'<s\' + \'cript src="\' + _vis_opt_protocol + \'d5phz18u4wuww.cloudfront.net/vis_opt.js" type="text/javascript">\' + \'<\/s\' + \'cript>\'); }
30 </script>
31 <script type=\'text/javascript\'>
32 if(typeof(_vis_opt_settings_loaded) == "boolean" && typeof(_vis_opt_top_initialize) == "function"){ _vis_opt_top_initialize();
33 vwo_$(document).ready(function() { _vis_opt_bottom_initialize(); }); }
34 </script>
35 <!-- End VWO Code -->
36 ';
37
38 $clhf_header_script_async = '
39 <!-- Start VWO Asynchronous Code -->
40 <script type=\'text/javascript\'>
41 var _vwo_code=(function(){
42 var account_id=VWO_ID,
43 settings_tolerance=SETTINGS_TOLERANCE,
44 library_tolerance=LIBRARY_TOLERANCE,
45 use_existing_jquery=false,
46 f=false,d=document;return{use_existing_jquery:function(){return use_existing_jquery;},library_tolerance:function(){return library_tolerance;},finish:function(){if(!f){f=true;var a=d.getElementById(\'_vis_opt_path_hides\');if(a)a.parentNode.removeChild(a);}},finished:function(){return f;},load:function(a){var b=d.createElement(\'script\');b.src=a;b.type=\'text/javascript\';b.innerText;b.onerror=function(){_vwo_code.finish();};d.getElementsByTagName(\'head\')[0].appendChild(b);},init:function(){settings_timer=setTimeout(\'_vwo_code.finish()\',settings_tolerance);this.load(\'//dev.visualwebsiteoptimizer.com/j.php?a=\'+account_id+\'&u=\'+encodeURIComponent(d.URL)+\'&r=\'+Math.random());var a=d.createElement(\'style\'),b=\'body{opacity:0 !important;filter:alpha(opacity=0) !important;background:none !important;}\',h=d.getElementsByTagName(\'head\')[0];a.setAttribute(\'id\',\'_vis_opt_path_hides\');a.setAttribute(\'type\',\'text/css\');if(a.styleSheet)a.styleSheet.cssText=b;else a.appendChild(d.createTextNode(b));h.appendChild(a);return settings_timer;}};}());_vwo_settings_timer=_vwo_code.init();
47 </script>
48 <!-- End VWO Asynchronous Code -->
49 ';
50
51
52 //------------------------------------------------------------------------//
53 //---Hook-----------------------------------------------------------------//
54 //------------------------------------------------------------------------//
55 add_action( 'wp_head', 'vwo_clhf_headercode',1 );
56 add_action( 'admin_menu', 'vwo_clhf_plugin_menu' );
57 add_action( 'admin_init', 'vwo_clhf_register_mysettings' );
58 add_action( 'admin_notices','vwo_clhf_warn_nosettings');
59
60
61 //------------------------------------------------------------------------//
62 //---Functions------------------------------------------------------------//
63 //------------------------------------------------------------------------//
64 // options page link
65 function vwo_clhf_plugin_menu() {
66 add_options_page('Visual Website Optimizer', 'VWO', 'create_users', 'clhf_vwo_options', 'vwo_clhf_plugin_options');
67 }
68
69 // whitelist settings
70 function vwo_clhf_register_mysettings(){
71 register_setting('clhf_vwo_options','vwo_id','intval');
72 register_setting('clhf_vwo_options','code_type');
73 register_setting('clhf_vwo_options','settings_tolerance','intval');
74 register_setting('clhf_vwo_options','library_tolerance','intval');
75 }
76
77 //------------------------------------------------------------------------//
78 //---Output Functions-----------------------------------------------------//
79 //------------------------------------------------------------------------//
80 function vwo_clhf_headercode(){
81 // runs in the header
82 global $clhf_header_script_sync, $clhf_header_script_async;
83 $vwo_id = get_option('vwo_id');
84 $code_type = get_option('code_type');
85 if($vwo_id){
86 if($code_type == 'SYNC')
87 echo str_replace('VWO_ID', $vwo_id, $clhf_header_script_sync); // only output if options were saved
88 else {
89 $settings_tolerance = get_option('settings_tolerance');
90 if(!is_numeric($settings_tolerance)) $settings_tolerance = 2000;
91
92 $library_tolerance = get_option('library_tolerance');
93 if(!is_numeric($library_tolerance)) $library_tolerance = 2500;
94
95 $clhf_header_script_async = str_replace('VWO_ID', $vwo_id, $clhf_header_script_async);
96 $clhf_header_script_async = str_replace('SETTINGS_TOLERANCE', $settings_tolerance, $clhf_header_script_async);
97 echo str_replace('LIBRARY_TOLERANCE', $library_tolerance, $clhf_header_script_async);
98 }
99 }
100 }
101 //------------------------------------------------------------------------//
102 //---Page Output Functions------------------------------------------------//
103 //------------------------------------------------------------------------//
104 // options page
105 function vwo_clhf_plugin_options() {
106 echo '<div class="wrap">';?>
107 <h2>VWO</h2>
108 <p>You need to have a <a href="https://vwo.com/">VWO</a> account in order to use this plugin. This plugin inserts the neccessary code into your Wordpress site automatically without you having to touch anything. In order to use the plugin, you need to enter your VWO Account ID:</p>
109 <form method="post" action="options.php">
110 <?php settings_fields( 'clhf_vwo_options' ); ?>
111 <table class="form-table">
112 <tr valign="top">
113 <th scope="row">Your VWO Account ID</th>
114 <td><input type="text" name="vwo_id" value="<?php echo get_option('vwo_id'); ?>" /></td>
115 </tr>
116 <tr valign="top">
117 <th scope="row">Code (default: Asynchronous)</th>
118 <td>
119 <input style="vertical-align: text-top;" type="radio" onclick="selectCodeType();" name="code_type" id="code_type_async" value="ASYNC" <?php if(get_option('code_type')!='SYNC') echo "checked"; ?> /> Asynchronous&nbsp;&nbsp;&nbsp;
120 <input style="vertical-align: text-top;" type="radio" onclick="selectCodeType();" name="code_type" id="code_type_sync" value="SYNC" <?php if(get_option('code_type')=='SYNC') echo "checked"; ?> /> Synchronous
121 &nbsp;<a href="https://vwo.com/blog/asynchronous-code" target="_blank">[Help]</a>
122 </td>
123 </tr>
124 <tr valign="top" id='asyncOnly1' <?php if(get_option('code_type')=='SYNC') echo "style='display:none;'" ?>>
125 <th scope="row">Settings Timeout</th>
126 <td style="vertical-align: middle;"><input type="text" name="settings_tolerance" value="<?php echo get_option('settings_tolerance')?get_option('settings_tolerance'):2000; ?>" />ms (default: 2000)</td>
127 </tr>
128 <tr valign="top" id='asyncOnly2' <?php if(get_option('code_type')=='SYNC') echo "style='display:none;'" ?>>
129 <th scope="row">Library Timeout</th>
130 <td style="vertical-align: middle;"><input type="text" name="library_tolerance" value="<?php echo get_option('library_tolerance')?get_option('library_tolerance'):2500; ?>" />ms (default: 2500)</td>
131 </tr>
132 </table>
133
134 <script type="text/javascript">
135 function selectCodeType() {
136 var code_type = 'ASYNC';
137 if(document.getElementById('code_type_sync').checked)
138 code_type = 'SYNC';
139
140 if(code_type == 'ASYNC') {
141 document.getElementById('asyncOnly1').style.display = 'table-row';
142 document.getElementById('asyncOnly2').style.display = 'table-row';
143 }
144 else {
145 document.getElementById('asyncOnly1').style.display = 'none';
146 document.getElementById('asyncOnly2').style.display = 'none';
147 }
148 }
149 </script>
150 <p class="submit"><input type="submit" class="button-primary" value="<?php _e('Save Changes') ?>" /></p>
151 <p>Your Account ID (a number) can be found in <i>Settings</i> area (top-right) after you <a href="https://app.vwo.com">login</a> into your VWO account.</p>
152 <?php
153 echo '</div>';
154 }
155
156 function vwo_clhf_warn_nosettings(){
157 if (!is_admin())
158 return;
159
160 $clhf_option = get_option("vwo_id");
161 if (!$clhf_option || $clhf_option < 1){
162 echo "<div id='vwo-warning' class='updated fade'><p><strong>VWO is almost ready.</strong> You must <a href=\"options-general.php?page=clhf_vwo_options\">enter your Account ID</a> for it to work.</p></div>";
163 }
164 }
165 ?>