Version Description
= * Tabbed admin interface * Google Ads conversion tracking * Text bubbles for standard circular buttons * 6 additional button placements * Hide button on the front page * Change the color of the icon * Small design changes * Other small plugin improvements
Download this release
Release Info
Developer | jgrietveld |
Plugin | Call Now Button |
Version | 0.4.0 |
Comparing to | |
See all releases |
Code changes from version 0.3.6 to 0.4.0
- call-now-button.css +25 -8
- call-now-button.js +39 -25
- call-now-button.php +377 -200
- readme.txt +45 -22
call-now-button.css
CHANGED
@@ -9,6 +9,15 @@
|
|
9 |
label.small-italic {
|
10 |
font-size: 12px;
|
11 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
12 |
.cnb-url a {
|
13 |
text-decoration: none;
|
14 |
font-weight: 200;
|
@@ -24,19 +33,18 @@ label.small-italic {
|
|
24 |
.cnb-container input[type="radio"] + label {
|
25 |
font-weight: 300;
|
26 |
}
|
27 |
-
.cnb-container input[type="radio"]:checked + label
|
|
|
28 |
font-weight: bold;
|
29 |
}
|
30 |
.radio-item {
|
31 |
margin: 10px 0;
|
32 |
}
|
33 |
-
|
34 |
-
|
35 |
-
display: inline-block;
|
36 |
}
|
37 |
-
|
38 |
-
|
39 |
-
cursor: pointer;
|
40 |
}
|
41 |
.check-settings,
|
42 |
.cnb-switch-back {
|
@@ -47,13 +55,19 @@ p.submit,
|
|
47 |
.red-background {
|
48 |
background-color: #ffdbdb !important;
|
49 |
}
|
50 |
-
#cnb_slider_value
|
|
|
51 |
font-weight: normal;
|
52 |
}
|
53 |
input[type='range'] {
|
54 |
position: relative;
|
55 |
top: 8px;
|
56 |
}
|
|
|
|
|
|
|
|
|
|
|
57 |
.cnb_slider_value {
|
58 |
font-weight: normal;
|
59 |
}
|
@@ -62,4 +76,7 @@ input[type='range'] {
|
|
62 |
.radio-item {
|
63 |
margin: 5px 0;
|
64 |
}
|
|
|
|
|
|
|
65 |
}
|
9 |
label.small-italic {
|
10 |
font-size: 12px;
|
11 |
}
|
12 |
+
|
13 |
+
table.form-table {
|
14 |
+
display:none;
|
15 |
+
}
|
16 |
+
|
17 |
+
table.form-table.nav-tab-active {
|
18 |
+
display: initial;
|
19 |
+
}
|
20 |
+
|
21 |
.cnb-url a {
|
22 |
text-decoration: none;
|
23 |
font-weight: 200;
|
33 |
.cnb-container input[type="radio"] + label {
|
34 |
font-weight: 300;
|
35 |
}
|
36 |
+
.cnb-container input[type="radio"]:checked + label,
|
37 |
+
.cnb-container input[type="checkbox"]:checked + label {
|
38 |
font-weight: bold;
|
39 |
}
|
40 |
.radio-item {
|
41 |
margin: 10px 0;
|
42 |
}
|
43 |
+
.cnb-extra-placement {
|
44 |
+
display: none;
|
|
|
45 |
}
|
46 |
+
.cnb-extra-placement.cnb-extra-active {
|
47 |
+
display: block;
|
|
|
48 |
}
|
49 |
.check-settings,
|
50 |
.cnb-switch-back {
|
55 |
.red-background {
|
56 |
background-color: #ffdbdb !important;
|
57 |
}
|
58 |
+
#cnb_slider_value,
|
59 |
+
#cnb_order_value {
|
60 |
font-weight: normal;
|
61 |
}
|
62 |
input[type='range'] {
|
63 |
position: relative;
|
64 |
top: 8px;
|
65 |
}
|
66 |
+
@-moz-document url-prefix() {
|
67 |
+
input[type='range'] {
|
68 |
+
top: 12px;
|
69 |
+
}
|
70 |
+
}
|
71 |
.cnb_slider_value {
|
72 |
font-weight: normal;
|
73 |
}
|
76 |
.radio-item {
|
77 |
margin: 5px 0;
|
78 |
}
|
79 |
+
}
|
80 |
+
.nounderscore {
|
81 |
+
text-decoration: none;
|
82 |
}
|
call-now-button.js
CHANGED
@@ -1,38 +1,52 @@
|
|
1 |
jQuery(document).ready(function($){
|
|
|
2 |
$('.cnb-color-field').wpColorPicker();
|
3 |
-
|
4 |
-
|
5 |
-
|
6 |
-
});
|
7 |
-
$("span.check-settings").click(function() {
|
8 |
-
if($("#settings").is(":hidden")) {
|
9 |
-
$("#settings").slideDown('fast');
|
10 |
-
$("div#cnb_settings").remove();
|
11 |
-
}
|
12 |
-
$("tr.appearance input").addClass("red-background").focus();
|
13 |
-
$('html, body').animate({
|
14 |
-
scrollTop: $("tr.appearance").offset().top
|
15 |
-
}, 500);
|
16 |
-
$("span.check-settings").remove();
|
17 |
-
});
|
18 |
-
$(".cnb-switch-back").click(function() {
|
19 |
-
if($("#settings").is(":hidden")) {
|
20 |
-
$("#settings").slideDown('fast');
|
21 |
-
$("div#cnb_settings").remove();
|
22 |
-
}
|
23 |
-
$("tr.classic ").addClass("red-background").focus();
|
24 |
-
$('html, body').animate({
|
25 |
-
scrollTop: $("tr.classic").offset().top
|
26 |
-
}, 500);
|
27 |
-
});
|
28 |
$("a#paypalLink").click(function(e){
|
29 |
e.preventDefault();
|
30 |
$("#paypal").click();
|
31 |
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
32 |
});
|
|
|
33 |
var cnb_slider = document.getElementById("cnb_slider");
|
34 |
var cnb_slider_value = document.getElementById("cnb_slider_value");
|
35 |
cnb_slider_value.innerHTML = Math.round(cnb_slider.value * 100) + "%";
|
36 |
cnb_slider.oninput = function() {
|
37 |
cnb_slider_value.innerHTML = Math.round(this.value * 100) + "%";
|
38 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
jQuery(document).ready(function($){
|
2 |
+
// Add color picker
|
3 |
$('.cnb-color-field').wpColorPicker();
|
4 |
+
$('.cnb-iconcolor-field').wpColorPicker();
|
5 |
+
|
6 |
+
// Add textlink for PayPal donate button
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
7 |
$("a#paypalLink").click(function(e){
|
8 |
e.preventDefault();
|
9 |
$("#paypal").click();
|
10 |
});
|
11 |
+
|
12 |
+
// Reveal additional button placements when clicking "more"
|
13 |
+
$("#cnb-more-placements").click(function(e){
|
14 |
+
e.preventDefault();
|
15 |
+
$(".cnb-extra-placement").css("display","block");
|
16 |
+
$("#cnb-more-placements").remove();
|
17 |
+
});
|
18 |
+
|
19 |
+
// Option to Hide Icon is only visible when the full width button is selected
|
20 |
+
var radioValue = $("input[name='cnb[appearance]']:checked").val();
|
21 |
+
var textValue = $("input[name='cnb[text]']").val();
|
22 |
+
if(radioValue != 'full' && radioValue != 'tfull') {
|
23 |
+
$('#hideIconTR').hide();
|
24 |
+
} else if(textValue.length < 1) {
|
25 |
+
$('#hideIconTR').hide();
|
26 |
+
}
|
27 |
+
$('input[name="cnb[appearance]"]').on("change",function(){
|
28 |
+
var radioValue = $("input[name='cnb[appearance]']:checked").val();
|
29 |
+
var textValue = $("input[name='cnb[text]']").val();
|
30 |
+
if(radioValue != 'full' && radioValue != 'tfull') {
|
31 |
+
$('#hideIconTR').hide();
|
32 |
+
} else if(textValue.length > 0 ) {
|
33 |
+
$('#hideIconTR').show();
|
34 |
+
}
|
35 |
+
|
36 |
+
});
|
37 |
});
|
38 |
+
// Zoom slider - show percentage
|
39 |
var cnb_slider = document.getElementById("cnb_slider");
|
40 |
var cnb_slider_value = document.getElementById("cnb_slider_value");
|
41 |
cnb_slider_value.innerHTML = Math.round(cnb_slider.value * 100) + "%";
|
42 |
cnb_slider.oninput = function() {
|
43 |
cnb_slider_value.innerHTML = Math.round(this.value * 100) + "%";
|
44 |
}
|
45 |
+
|
46 |
+
// Z-index slider - show steps
|
47 |
+
var cnb_order_slider = document.getElementById("cnb_order_slider");
|
48 |
+
var cnb_order_value = document.getElementById("cnb_order_value");
|
49 |
+
cnb_order_value.innerHTML = cnb_order_slider.value;
|
50 |
+
cnb_order_slider.oninput = function() {
|
51 |
+
cnb_order_value.innerHTML = this.value;
|
52 |
+
}
|
call-now-button.php
CHANGED
@@ -1,9 +1,9 @@
|
|
1 |
<?php
|
2 |
/*
|
3 |
Plugin Name: Call Now Button
|
4 |
-
Plugin URI:
|
5 |
-
Description: Mobile visitors will see a
|
6 |
-
Version: 0.
|
7 |
Author: Jerry Rietveld
|
8 |
Author URI: http://www.jgrietveld.com
|
9 |
License: GPL2
|
@@ -26,16 +26,19 @@ License: GPL2
|
|
26 |
*/
|
27 |
?>
|
28 |
<?php
|
29 |
-
define('CNB_VERSION','0.
|
30 |
define('CNB_BASENAME', plugin_basename( __FILE__ ) );
|
31 |
define('CNB_BASEFOLDER', plugin_basename( dirname( __FILE__ ) ) );
|
32 |
define('CNB_FILENAME', str_replace( CNB_BASEFOLDER.'/', '', CNB_BASENAME ) );
|
33 |
-
|
|
|
|
|
34 |
add_action('admin_init', 'cnb_options_init');
|
35 |
|
36 |
$cnb_changelog =
|
37 |
array(
|
38 |
array(
|
|
|
39 |
'3.6' => 'Small validation fixes and zoom now controls icon size in full width buttons.',
|
40 |
'3.5' => 'Small JS fix',
|
41 |
'3.4' => 'Option to resize your button and change where it sits in the stack order (z-index).',
|
@@ -44,7 +47,7 @@ array(
|
|
44 |
'3.1' => 'You can now add text to your button and it\'s possible to switch between including and excluding specific pages.',
|
45 |
'3.0' => 'Option to add text to your button.',
|
46 |
'2.1' => 'Some small fixes',
|
47 |
-
'2.0' => 'The Call Now Button has a
|
48 |
)
|
49 |
);
|
50 |
|
@@ -56,6 +59,7 @@ $cnb_updated = $cnb_settings['updated'];
|
|
56 |
$cnb_options['active'] = isset($cnb_options['active']) ? 1 : 0;
|
57 |
$cnb_options['classic'] = isset($cnb_options['classic']) ? 1 : 0;
|
58 |
$cnb_options['hideIcon'] = isset($cnb_options['hideIcon']) ? $cnb_options['hideIcon'] : 0;
|
|
|
59 |
|
60 |
$plugin_title = apply_filters( 'cnb_plugin_title', 'Call Now Button');
|
61 |
|
@@ -63,9 +67,9 @@ if(isset($_GET['page']) && strpos($_GET['page'], 'call-now-button') !== false) {
|
|
63 |
add_action( 'admin_enqueue_scripts', 'cnb_enqueue_color_picker' ); // add the color picker
|
64 |
}
|
65 |
|
66 |
-
function
|
67 |
global $plugin_title;
|
68 |
-
$page = add_submenu_page('options-general.php', $plugin_title, $plugin_title, 'manage_options', 'call-now-button', '
|
69 |
add_action( 'admin_print_styles-' . $page , 'cnb_admin_styling' );
|
70 |
}
|
71 |
function cnb_enqueue_color_picker( $hook_suffix ) {
|
@@ -79,8 +83,8 @@ function cnb_admin_styling() {
|
|
79 |
function cnb_plugin_meta($links, $file) {
|
80 |
if ( $file == CNB_BASENAME ) {
|
81 |
$cnb_new_links = array(
|
82 |
-
sprintf( '<a href="options-general.php?page=%s">%s</a>',
|
83 |
-
'<a href="
|
84 |
array_push(
|
85 |
$links,
|
86 |
$cnb_new_links[0],
|
@@ -92,7 +96,7 @@ function cnb_plugin_meta($links, $file) {
|
|
92 |
add_filter( 'plugin_row_meta', 'cnb_plugin_meta', 10, 2 );
|
93 |
|
94 |
function cnb_plugin_add_settings_link( $links ) {
|
95 |
-
array_unshift( $links, sprintf( '<a href="options-general.php?page=%s">%s</a>',
|
96 |
return $links;
|
97 |
}
|
98 |
add_filter( 'plugin_action_links_'. CNB_BASENAME, 'cnb_plugin_add_settings_link' );
|
@@ -101,7 +105,7 @@ function cnb_options_init() {
|
|
101 |
register_setting('cnb_options','cnb');
|
102 |
wp_register_style( 'cnb_styling', plugins_url('call-now-button.css', __FILE__), false, CNB_VERSION, 'all' );
|
103 |
}
|
104 |
-
function
|
105 |
global $cnb_options;
|
106 |
global $plugin_title;
|
107 |
global $cnb_updated;
|
@@ -124,12 +128,6 @@ function call_now_settings_page() {
|
|
124 |
if($cnb_caching_check[0] == TRUE) {
|
125 |
echo '<div class="notice-error notice"><p><span class="dashicons dashicons-warning"></span> Your website is using a <strong><i>Caching Plugin</i></strong> ('.$cnb_caching_check[1].'). If you\'re not seeing your button or your changes, make sure you empty your cache first.</p></div>';
|
126 |
}
|
127 |
-
}
|
128 |
-
|
129 |
-
// Display notification that the button is limited to a number of posts/pages
|
130 |
-
if($cnb_options['active']==1 && $cnb_options['show'] != "") {
|
131 |
-
echo '<div class="notice-error notice">'.
|
132 |
-
'<p><span>Appearance of the Button is <b>limited</b><span class="hide-on-mobile"> to specific Posts or Pages</span>. <span class="check-settings">Review settings »</span></p></div>';
|
133 |
}
|
134 |
|
135 |
// inform exisiting users about update to the button design
|
@@ -137,6 +135,7 @@ function call_now_settings_page() {
|
|
137 |
<div class="notice-warning notice is-dismissible">
|
138 |
<?php
|
139 |
$cnb_old_version = substr($cnb_updated[1],2);
|
|
|
140 |
foreach ($cnb_changelog[0] as $key => $value) { // Only on first run after update show list of changes since last update
|
141 |
if($key > $cnb_old_version) {
|
142 |
echo '<p><span class="dashicons dashicons-yes"></span> ' . $value . '</p>';
|
@@ -144,11 +143,28 @@ function call_now_settings_page() {
|
|
144 |
}
|
145 |
?>
|
146 |
</div>
|
147 |
-
<?php }
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
148 |
|
|
|
|
|
|
|
|
|
|
|
|
|
149 |
<form method="post" action="options.php" class="cnb-container">
|
150 |
<?php settings_fields('cnb_options'); ?>
|
151 |
-
<table class="form-table">
|
|
|
|
|
|
|
152 |
<tr valign="top">
|
153 |
<th scope="row">Button status:</th>
|
154 |
<td class="activated">
|
@@ -156,132 +172,216 @@ function call_now_settings_page() {
|
|
156 |
</td>
|
157 |
</tr>
|
158 |
<tr valign="top">
|
159 |
-
<th scope="row">Phone number
|
|
|
|
|
160 |
<td><input type="text" name="cnb[number]" value="<?php echo $cnb_options['number']; ?>" /></td>
|
161 |
</tr>
|
162 |
<tr valign="top" class="button-text">
|
163 |
-
<th scope="row">Button text
|
|
|
|
|
164 |
<td>
|
165 |
-
<input id="buttonTextField" type="text" name="cnb[text]" value="<?php echo $cnb_options['text']; ?>" maxlength="30"
|
166 |
-
<
|
167 |
-
|
168 |
-
<p class="description">Make sure to check on your phone if the text fits your button! <span class="whatsThis">(<a href="http://callnowbutton.com/call-now-button-text-buttons/" target="_blank">Learn why...</a>)</span></p>
|
169 |
</td>
|
170 |
</tr>
|
171 |
</table>
|
172 |
-
|
173 |
-
|
174 |
-
|
175 |
-
|
176 |
-
|
177 |
-
|
178 |
-
|
179 |
-
|
180 |
-
|
181 |
-
|
182 |
-
|
183 |
-
|
184 |
-
|
185 |
-
|
186 |
-
|
187 |
-
|
188 |
-
|
189 |
-
|
190 |
-
|
191 |
-
|
192 |
-
|
193 |
-
|
194 |
-
|
195 |
-
<label title="full" for="appearance4">Full bottom</label>
|
196 |
-
</div>
|
197 |
</div>
|
198 |
-
|
199 |
-
|
200 |
-
|
201 |
-
|
202 |
-
|
203 |
-
|
204 |
-
|
205 |
-
|
206 |
-
|
207 |
-
|
208 |
-
|
209 |
-
|
210 |
-
|
211 |
-
|
212 |
-
|
213 |
-
|
214 |
-
|
215 |
-
|
216 |
-
|
217 |
-
|
218 |
-
|
219 |
-
|
220 |
-
|
221 |
-
|
222 |
-
|
223 |
-
|
224 |
-
|
225 |
-
|
226 |
-
|
227 |
-
|
228 |
-
|
229 |
-
|
230 |
-
|
231 |
-
|
232 |
-
|
233 |
-
|
234 |
-
|
235 |
-
|
236 |
-
|
237 |
-
|
238 |
-
|
239 |
-
|
240 |
-
|
241 |
-
|
242 |
-
|
243 |
-
|
244 |
-
|
245 |
-
|
246 |
-
|
247 |
-
|
248 |
-
|
249 |
-
|
250 |
-
|
251 |
-
|
252 |
-
|
253 |
-
|
254 |
-
|
255 |
-
|
256 |
-
|
257 |
-
|
258 |
-
|
259 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
260 |
<input type="hidden" name="cnb[version]" value="<?php echo CNB_VERSION; ?>" />
|
261 |
<p class="submit"><input type="submit" class="button-primary" value="<?php _e('Save Changes') ?>" /></p>
|
262 |
-
<div id="cnb_settings">+ Advanced settings</div>
|
263 |
</form>
|
264 |
|
265 |
<div class="feedback-collection">
|
266 |
<div class="cnb-clear"></div>
|
267 |
-
<p class="cnb-url cnb-center"><a href="
|
268 |
-
|
269 |
-
<hr>
|
270 |
|
271 |
<p class="cnb-center cnb-spacing">
|
272 |
-
<a href="
|
273 |
-
<a href="
|
274 |
<a href="#donate" id="paypalLink">Donate</a> ·
|
275 |
-
<a href="
|
276 |
</p>
|
277 |
<!--// Display notification about the testing program -->
|
278 |
<div class="postbox cnb-alert-box cnb-center">
|
279 |
-
<p>The Call Now Button <b>Pro</b> is
|
280 |
-
<a class="cnb-external" href="
|
281 |
</p>
|
282 |
</div>
|
283 |
|
284 |
-
<hr>
|
285 |
<div class="donate cnb-center">
|
286 |
<form action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_top">
|
287 |
<input type="hidden" name="cmd" value="_s-xclick">
|
@@ -296,114 +396,173 @@ function call_now_settings_page() {
|
|
296 |
if(get_option('cnb') && !is_admin()) {
|
297 |
|
298 |
$cnb_options = get_option('cnb');
|
299 |
-
|
300 |
-
|
301 |
-
|
302 |
function cnb_head() {
|
303 |
-
$cnb_options
|
304 |
-
|
305 |
-
$
|
306 |
-
$
|
|
|
|
|
|
|
307 |
$ButtonExtra = "";
|
308 |
-
if($
|
309 |
|
310 |
// OLD BUTTON DESIGN
|
311 |
-
if($cnb_options['appearance'] == 'full' || $cnb_options['appearance'] == 'middle' || $
|
312 |
-
$
|
313 |
$ButtonExtra = "body {padding-bottom:60px;}";
|
314 |
}
|
315 |
elseif($cnb_options['appearance'] == 'left') {
|
316 |
-
$
|
317 |
} else {
|
318 |
-
$
|
319 |
}
|
320 |
|
321 |
-
$
|
322 |
|
323 |
} else {
|
324 |
-
|
325 |
-
|
326 |
-
|
327 |
-
$
|
328 |
-
|
329 |
-
|
330 |
-
|
331 |
-
|
332 |
-
|
333 |
-
|
334 |
-
|
335 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
336 |
}
|
337 |
}
|
338 |
-
}
|
339 |
-
|
340 |
-
$ButtonAppearance = $ButtonShape . "left:20px;";
|
341 |
-
}
|
342 |
-
elseif($cnb_options['appearance'] == 'middle') {
|
343 |
-
$ButtonAppearance = $ButtonShape . "left:50%; margin-left:-33px;";
|
344 |
}
|
345 |
-
|
346 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
347 |
}
|
348 |
|
349 |
-
$
|
350 |
-
$
|
351 |
-
$
|
352 |
-
if(
|
353 |
-
$
|
354 |
} else {
|
355 |
-
$
|
356 |
}
|
357 |
-
$
|
358 |
-
$
|
|
|
359 |
}
|
360 |
-
echo $
|
361 |
}
|
362 |
add_action('wp_head', 'cnb_head');
|
363 |
|
364 |
function cnb_footer() {
|
365 |
-
$cnb_options
|
366 |
-
|
367 |
-
|
368 |
-
|
369 |
-
|
370 |
-
|
371 |
-
|
372 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
373 |
}
|
374 |
|
375 |
-
if($
|
376 |
-
$
|
377 |
-
|
378 |
-
$
|
379 |
-
|
380 |
-
$tracking = "onclick=\"gtag('event', 'Call Now Button', {event_category: 'contact', event_label: 'phone'});\"";
|
381 |
} else {
|
382 |
-
$
|
383 |
}
|
384 |
|
385 |
-
if($
|
386 |
-
$
|
387 |
-
|
388 |
-
$
|
389 |
} else {
|
390 |
-
$
|
391 |
}
|
392 |
|
393 |
-
$
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
394 |
|
395 |
-
if(
|
396 |
-
if(
|
397 |
-
|
398 |
-
|
|
|
|
|
|
|
|
|
399 |
}
|
400 |
} else {
|
401 |
-
if(!is_single($
|
402 |
-
echo $
|
403 |
}
|
404 |
}
|
405 |
} else {
|
406 |
-
echo $
|
407 |
}
|
408 |
}
|
409 |
add_action('wp_footer', 'cnb_footer');
|
@@ -417,11 +576,14 @@ function cnb_get_options() { // Grabbing existing settings and creating them if
|
|
417 |
'number' => '',
|
418 |
'text' => '',
|
419 |
'hideIcon' => 0,
|
420 |
-
'color' => '#
|
|
|
421 |
'appearance' => 'right',
|
422 |
'tracking' => 0,
|
|
|
423 |
'show' => '',
|
424 |
'limit' => 'include',
|
|
|
425 |
'zoom' => '1',
|
426 |
'z-index' => '10',
|
427 |
'version' => CNB_VERSION
|
@@ -451,24 +613,32 @@ function cnb_update_needed() { //compares version numbers
|
|
451 |
}
|
452 |
function cnb_update_options() {
|
453 |
$cnb_options = get_option('cnb');
|
454 |
-
//$version = array_key_exists('version', $cnb_options) ? substr($cnb_options['version'], 0, 3) : 0.1;
|
455 |
if(cnb_update_needed()) { // Check current version and if it needs an update
|
456 |
$cnb_options['active'] = isset($cnb_options['active']) ? 1 : 0;
|
457 |
$cnb_options['text'] = isset($cnb_options['text']) ? $cnb_options['text'] : "";
|
|
|
|
|
458 |
$cnb_options['hideIcon'] = isset($cnb_options['hideIcon']) ? $cnb_options['hideIcon'] : 0;
|
459 |
$cnb_options['limit'] = isset($cnb_options['limit']) ? $cnb_options['limit'] : 'include';
|
|
|
|
|
|
|
|
|
460 |
$default_options = array(
|
461 |
'active' => $cnb_options['active'],
|
462 |
'number' => $cnb_options['number'],
|
463 |
'text' => $cnb_options['text'],
|
464 |
'hideIcon' => $cnb_options['hideIcon'],
|
465 |
'color' => $cnb_options['color'],
|
|
|
466 |
'appearance' => $cnb_options['appearance'],
|
467 |
'tracking' => $cnb_options['tracking'],
|
|
|
468 |
'show' => $cnb_options['show'],
|
469 |
'limit' => $cnb_options['limit'],
|
470 |
-
'
|
471 |
-
'
|
|
|
472 |
'version' => CNB_VERSION
|
473 |
);
|
474 |
if(array_key_exists('classic', $cnb_options) && $cnb_options['classic'] == 1 ) {
|
@@ -484,7 +654,7 @@ function cnb_update_options() {
|
|
484 |
// Color functions to calculate borders
|
485 |
function changeColor($color, $direction) {
|
486 |
if(!preg_match('/^#?([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})$/i', $color, $parts));
|
487 |
-
if(!isset($direction) || $direction == "lighter") { $change = 45; } else { $change = -
|
488 |
for($i = 1; $i <= 3; $i++) {
|
489 |
$parts[$i] = hexdec($parts[$i]);
|
490 |
$parts[$i] = round($parts[$i] + $change);
|
@@ -495,8 +665,8 @@ function changeColor($color, $direction) {
|
|
495 |
return $output;
|
496 |
}
|
497 |
|
498 |
-
function svg($color) {
|
499 |
-
$phone = '<path d="M7.104 14.032l15.586 1.984c0 0-0.019 0.5 0 0.953c0.029 0.756-0.26 1.534-0.809 2.1 l-4.74 4.742c2.361 3.3 16.5 17.4 19.8 19.8l16.813 1.141c0 0 0 0.4 0 1.1 c-0.002 0.479-0.176 0.953-0.549 1.327l-6.504 6.505c0 0-11.261 0.988-25.925-13.674C6.117 25.3 7.1 14 7.1 14" fill="'.$color.'"/><path d="M7.104 13.032l6.504-6.505c0.896-0.895 2.334-0.678 3.1 0.35l5.563 7.8 c0.738 1 0.5 2.531-0.36 3.426l-4.74 4.742c2.361 3.3 5.3 6.9 9.1 10.699c3.842 3.8 7.4 6.7 10.7 9.1 l4.74-4.742c0.897-0.895 2.471-1.026 3.498-0.289l7.646 5.455c1.025 0.7 1.3 2.2 0.4 3.105l-6.504 6.5 c0 0-11.262 0.988-25.925-13.674C6.117 24.3 7.1 13 7.1 13" fill="
|
500 |
$svg = '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 60 60">' . $phone . '</svg>';
|
501 |
return base64_encode($svg);
|
502 |
}
|
@@ -549,4 +719,11 @@ function cnb_check_for_caching() {
|
|
549 |
}
|
550 |
return array($active,$name);
|
551 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
552 |
?>
|
1 |
<?php
|
2 |
/*
|
3 |
Plugin Name: Call Now Button
|
4 |
+
Plugin URI: https://callnowbutton.com
|
5 |
+
Description: Mobile visitors will see a <strong>Call Now Button</strong> on your website. Easy to use but flexible to meet more demanding requirements. Change placement and color, hide on specific pages, track how many people click them or conversions of your Google Ads campaigns. It's all optional but possible.
|
6 |
+
Version: 0.4.0
|
7 |
Author: Jerry Rietveld
|
8 |
Author URI: http://www.jgrietveld.com
|
9 |
License: GPL2
|
26 |
*/
|
27 |
?>
|
28 |
<?php
|
29 |
+
define('CNB_VERSION','0.4.0');
|
30 |
define('CNB_BASENAME', plugin_basename( __FILE__ ) );
|
31 |
define('CNB_BASEFOLDER', plugin_basename( dirname( __FILE__ ) ) );
|
32 |
define('CNB_FILENAME', str_replace( CNB_BASEFOLDER.'/', '', CNB_BASENAME ) );
|
33 |
+
define('CNB_WEBSITE','https://callnowbutton.com/');
|
34 |
+
define('CNB_SUPPORT', CNB_WEBSITE . 'support/');
|
35 |
+
add_action('admin_menu', 'cnb_register_admin_page');
|
36 |
add_action('admin_init', 'cnb_options_init');
|
37 |
|
38 |
$cnb_changelog =
|
39 |
array(
|
40 |
array(
|
41 |
+
'4.0' => 'Text bubbles for standard buttons, set the icon color, Google Ads conversion tracking, tabbed admin interface, 6 additional button locations, small button design changes, added support articles for (nearly) all settings, control visibility on front page, plus a bunch of smaller fixes. Enjoy!',
|
42 |
'3.6' => 'Small validation fixes and zoom now controls icon size in full width buttons.',
|
43 |
'3.5' => 'Small JS fix',
|
44 |
'3.4' => 'Option to resize your button and change where it sits in the stack order (z-index).',
|
47 |
'3.1' => 'You can now add text to your button and it\'s possible to switch between including and excluding specific pages.',
|
48 |
'3.0' => 'Option to add text to your button.',
|
49 |
'2.1' => 'Some small fixes',
|
50 |
+
'2.0' => 'The Call Now Button has a new look!'
|
51 |
)
|
52 |
);
|
53 |
|
59 |
$cnb_options['active'] = isset($cnb_options['active']) ? 1 : 0;
|
60 |
$cnb_options['classic'] = isset($cnb_options['classic']) ? 1 : 0;
|
61 |
$cnb_options['hideIcon'] = isset($cnb_options['hideIcon']) ? $cnb_options['hideIcon'] : 0;
|
62 |
+
$cnb_options['frontpage'] = isset($cnb_options['frontpage']) ? $cnb_options['frontpage'] : 0;
|
63 |
|
64 |
$plugin_title = apply_filters( 'cnb_plugin_title', 'Call Now Button');
|
65 |
|
67 |
add_action( 'admin_enqueue_scripts', 'cnb_enqueue_color_picker' ); // add the color picker
|
68 |
}
|
69 |
|
70 |
+
function cnb_register_admin_page() {
|
71 |
global $plugin_title;
|
72 |
+
$page = add_submenu_page('options-general.php', $plugin_title, $plugin_title, 'manage_options', 'call-now-button', 'cnb_admin_settings_page');
|
73 |
add_action( 'admin_print_styles-' . $page , 'cnb_admin_styling' );
|
74 |
}
|
75 |
function cnb_enqueue_color_picker( $hook_suffix ) {
|
83 |
function cnb_plugin_meta($links, $file) {
|
84 |
if ( $file == CNB_BASENAME ) {
|
85 |
$cnb_new_links = array(
|
86 |
+
sprintf( '<a href="options-general.php?page=%s">%s</a>', CNB_BASEFOLDER, __('Settings')),
|
87 |
+
'<a href="'.CNB_SUPPORT.'">Support</a>');
|
88 |
array_push(
|
89 |
$links,
|
90 |
$cnb_new_links[0],
|
96 |
add_filter( 'plugin_row_meta', 'cnb_plugin_meta', 10, 2 );
|
97 |
|
98 |
function cnb_plugin_add_settings_link( $links ) {
|
99 |
+
array_unshift( $links, sprintf( '<a href="options-general.php?page=%s">%s</a>', CNB_BASEFOLDER, __('Settings') ) );
|
100 |
return $links;
|
101 |
}
|
102 |
add_filter( 'plugin_action_links_'. CNB_BASENAME, 'cnb_plugin_add_settings_link' );
|
105 |
register_setting('cnb_options','cnb');
|
106 |
wp_register_style( 'cnb_styling', plugins_url('call-now-button.css', __FILE__), false, CNB_VERSION, 'all' );
|
107 |
}
|
108 |
+
function cnb_admin_settings_page() {
|
109 |
global $cnb_options;
|
110 |
global $plugin_title;
|
111 |
global $cnb_updated;
|
128 |
if($cnb_caching_check[0] == TRUE) {
|
129 |
echo '<div class="notice-error notice"><p><span class="dashicons dashicons-warning"></span> Your website is using a <strong><i>Caching Plugin</i></strong> ('.$cnb_caching_check[1].'). If you\'re not seeing your button or your changes, make sure you empty your cache first.</p></div>';
|
130 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
131 |
}
|
132 |
|
133 |
// inform exisiting users about update to the button design
|
135 |
<div class="notice-warning notice is-dismissible">
|
136 |
<?php
|
137 |
$cnb_old_version = substr($cnb_updated[1],2);
|
138 |
+
echo "<h3>The Call Now Button has been updated!</h3><h4>What's new?</h4>";
|
139 |
foreach ($cnb_changelog[0] as $key => $value) { // Only on first run after update show list of changes since last update
|
140 |
if($key > $cnb_old_version) {
|
141 |
echo '<p><span class="dashicons dashicons-yes"></span> ' . $value . '</p>';
|
143 |
}
|
144 |
?>
|
145 |
</div>
|
146 |
+
<?php }
|
147 |
+
|
148 |
+
|
149 |
+
if( isset( $_GET[ 'tab' ] ) ) {
|
150 |
+
$active_tab = $_GET[ 'tab' ];
|
151 |
+
} else {
|
152 |
+
$active_tab = "basic_options";
|
153 |
+
} // end if
|
154 |
+
|
155 |
|
156 |
+
?>
|
157 |
+
<h2 class="nav-tab-wrapper">
|
158 |
+
<a href="?page=call-now-button&tab=basic_options" class="nav-tab <?php echo $active_tab == 'basic_options' ? 'nav-tab-active' : ''; ?>">Basics</a>
|
159 |
+
<a href="?page=call-now-button&tab=extra_options" class="nav-tab <?php echo $active_tab == 'extra_options' ? 'nav-tab-active' : ''; ?>">Presentation</a>
|
160 |
+
<a href="?page=call-now-button&tab=advanced_options" class="nav-tab <?php echo $active_tab == 'advanced_options' ? 'nav-tab-active' : ''; ?>">Advanced</a>
|
161 |
+
</h2>
|
162 |
<form method="post" action="options.php" class="cnb-container">
|
163 |
<?php settings_fields('cnb_options'); ?>
|
164 |
+
<table class="form-table <?php echo $active_tab == 'basic_options' ? 'nav-tab-active' : ''; ?>">
|
165 |
+
<tr>
|
166 |
+
<th colspan="2"><h2>Basic Settings</h2></th>
|
167 |
+
</tr>
|
168 |
<tr valign="top">
|
169 |
<th scope="row">Button status:</th>
|
170 |
<td class="activated">
|
172 |
</td>
|
173 |
</tr>
|
174 |
<tr valign="top">
|
175 |
+
<th scope="row">Phone number:<a href="<?php echo CNB_SUPPORT; ?>phone-number/<?php cnb_utm_params("question-mark", "phone-number"); ?>" target="_blank" class="nounderscore">
|
176 |
+
<span class="dashicons dashicons-editor-help"></span>
|
177 |
+
</a></th>
|
178 |
<td><input type="text" name="cnb[number]" value="<?php echo $cnb_options['number']; ?>" /></td>
|
179 |
</tr>
|
180 |
<tr valign="top" class="button-text">
|
181 |
+
<th scope="row">Button text <small style="font-weight: 400">(optional)</small>:<a href="<?php echo CNB_SUPPORT; ?>using-text-buttons/<?php cnb_utm_params("question-mark", "using-text-buttons"); ?>" target="_blank" class="nounderscore">
|
182 |
+
<span class="dashicons dashicons-editor-help"></span>
|
183 |
+
</a></th>
|
184 |
<td>
|
185 |
+
<input id="buttonTextField" type="text" name="cnb[text]" value="<?php echo $cnb_options['text']; ?>" maxlength="30" />
|
186 |
+
<p class="description">Leave this field empty to only show an icon.</p>
|
|
|
|
|
187 |
</td>
|
188 |
</tr>
|
189 |
</table>
|
190 |
+
|
191 |
+
<table class="form-table <?php echo $active_tab == 'extra_options' ? 'nav-tab-active' : ''; ?>">
|
192 |
+
<tr>
|
193 |
+
<th colspan="2"><h2>Presentation Settings</h2></th>
|
194 |
+
</tr>
|
195 |
+
|
196 |
+
<tr valign="top">
|
197 |
+
<th scope="row">Button color:</th>
|
198 |
+
<td><input name="cnb[color]" type="text" value="<?php echo $cnb_options['color']; ?>" class="cnb-color-field" data-default-color="#009900" /></td>
|
199 |
+
</tr>
|
200 |
+
<tr valign="top">
|
201 |
+
<th scope="row">Icon color:</th>
|
202 |
+
<td><input name="cnb[iconcolor]" type="text" value="<?php echo $cnb_options['iconcolor']; ?>" class="cnb-iconcolor-field" data-default-color="#ffffff" /></td>
|
203 |
+
</tr>
|
204 |
+
<tr valign="top">
|
205 |
+
<th scope="row">Position: <a href="<?php echo CNB_SUPPORT; ?>button-position/<?php cnb_utm_params("question-mark", "button-position"); ?>" target="_blank" class="nounderscore">
|
206 |
+
<span class="dashicons dashicons-editor-help"></span>
|
207 |
+
</a></th>
|
208 |
+
<td class="appearance">
|
209 |
+
<div class="appearance-options">
|
210 |
+
<div class="radio-item">
|
211 |
+
<input type="radio" id="appearance1" name="cnb[appearance]" value="right" <?php checked('right', $cnb_options['appearance']); ?>>
|
212 |
+
<label title="right" for="appearance1">Right corner</label>
|
|
|
|
|
213 |
</div>
|
214 |
+
<div class="radio-item">
|
215 |
+
<input type="radio" id="appearance2" name="cnb[appearance]" value="left" <?php checked('left', $cnb_options['appearance']); ?>>
|
216 |
+
<label title="left" for="appearance2">Left corner</label>
|
217 |
+
</div>
|
218 |
+
<div class="radio-item">
|
219 |
+
<input type="radio" id="appearance3" name="cnb[appearance]" value="middle" <?php checked('middle', $cnb_options['appearance']); ?>>
|
220 |
+
<label title="middle" for="appearance3">Center bottom</label>
|
221 |
+
</div>
|
222 |
+
<div class="radio-item">
|
223 |
+
<input type="radio" id="appearance4" name="cnb[appearance]" value="full" <?php checked('full', $cnb_options['appearance']); ?>>
|
224 |
+
<label title="full" for="appearance4">Full bottom</label>
|
225 |
+
</div>
|
226 |
+
|
227 |
+
<!-- Extra placement options -->
|
228 |
+
<br class="cnb-extra-placement">
|
229 |
+
<div class="radio-item cnb-extra-placement <?php echo $cnb_options['appearance'] == "mright" ? "cnb-extra-active" : ""; ?>">
|
230 |
+
<input type="radio" id="appearance5" name="cnb[appearance]" value="mright" <?php checked('mright', $cnb_options['appearance']); ?>>
|
231 |
+
<label title="mright" for="appearance5">Middle right</label>
|
232 |
+
</div>
|
233 |
+
<div class="radio-item cnb-extra-placement <?php echo $cnb_options['appearance'] == "mleft" ? "cnb-extra-active" : ""; ?>">
|
234 |
+
<input type="radio" id="appearance6" name="cnb[appearance]" value="mleft" <?php checked('mleft', $cnb_options['appearance']); ?>>
|
235 |
+
<label title="mleft" for="appearance6">Middle left </label>
|
236 |
+
</div>
|
237 |
+
<br class="cnb-extra-placement">
|
238 |
+
<div class="radio-item cnb-extra-placement <?php echo $cnb_options['appearance'] == "tright" ? "cnb-extra-active" : ""; ?>">
|
239 |
+
<input type="radio" id="appearance7" name="cnb[appearance]" value="tright" <?php checked('tright', $cnb_options['appearance']); ?>>
|
240 |
+
<label title="tright" for="appearance7">Top right corner</label>
|
241 |
+
</div>
|
242 |
+
<div class="radio-item cnb-extra-placement <?php echo $cnb_options['appearance'] == "tleft" ? "cnb-extra-active" : ""; ?>">
|
243 |
+
<input type="radio" id="appearance8" name="cnb[appearance]" value="tleft" <?php checked('tleft', $cnb_options['appearance']); ?>>
|
244 |
+
<label title="tleft" for="appearance8">Top left corner</label>
|
245 |
+
</div>
|
246 |
+
<div class="radio-item cnb-extra-placement <?php echo $cnb_options['appearance'] == "tmiddle" ? "cnb-extra-active" : ""; ?>">
|
247 |
+
<input type="radio" id="appearance9" name="cnb[appearance]" value="tmiddle" <?php checked('tmiddle', $cnb_options['appearance']); ?>>
|
248 |
+
<label title="tmiddle" for="appearance9">Center top</label>
|
249 |
+
</div>
|
250 |
+
<div class="radio-item cnb-extra-placement <?php echo $cnb_options['appearance'] == "tfull" ? "cnb-extra-active" : ""; ?>">
|
251 |
+
<input type="radio" id="appearance10" name="cnb[appearance]" value="tfull" <?php checked('tfull', $cnb_options['appearance']); ?>>
|
252 |
+
<label title="tfull" for="appearance10">Full top</label>
|
253 |
+
</div>
|
254 |
+
<a href="#" id="cnb-more-placements">More placement options...</a>
|
255 |
+
<!-- END extra placement options -->
|
256 |
+
</div>
|
257 |
+
|
258 |
+
<div id="hideIconTR">
|
259 |
+
<br>
|
260 |
+
<input id="hide_icon" type="checkbox" name="cnb[hideIcon]" value="1" <?php checked('1', $cnb_options['hideIcon']); ?>>
|
261 |
+
<label title="right" for="hide_icon">Remove icon</label>
|
262 |
+
</div>
|
263 |
+
</td>
|
264 |
+
</tr>
|
265 |
+
<tr valign="top" class="appearance">
|
266 |
+
<th scope="row">Limit appearance: <a href="<?php echo CNB_SUPPORT; ?>limit-appearance/<?php cnb_utm_params("question-mark", "limit-appearance"); ?>" target="_blank" class="nounderscore">
|
267 |
+
<span class="dashicons dashicons-editor-help"></span>
|
268 |
+
</a></th>
|
269 |
+
<td>
|
270 |
+
<input type="text" name="cnb[show]" value="<?php echo $cnb_options['show']; ?>" placeholder="E.g. 14, 345" />
|
271 |
+
<p class="description">Enter IDs of the posts & pages, separated by commas (leave blank for all). <a href="<?php echo CNB_SUPPORT; ?>limit-appearance/<?php cnb_utm_params("question-mark", "limit-appearance"); ?>">Learn more...</a></p>
|
272 |
+
<div class="radio-item">
|
273 |
+
<input id="limit1" type="radio" name="cnb[limit]" value="include" <?php checked('include', $cnb_options['limit']);?> />
|
274 |
+
<label for="limit1">Limit to these posts and pages.</label>
|
275 |
+
</div>
|
276 |
+
<div class="radio-item">
|
277 |
+
<input id="limit2" type="radio" name="cnb[limit]" value="exclude" <?php checked('exclude', $cnb_options['limit']);?> />
|
278 |
+
<label for="limit2">Exclude these posts and pages.</label>
|
279 |
+
</div>
|
280 |
+
<br>
|
281 |
+
<div>
|
282 |
+
<input id="frontpage" type="checkbox" name="cnb[frontpage]" value="1" <?php checked('1', $cnb_options['frontpage']); ?>>
|
283 |
+
<label title="right" for="frontpage">Hide button on front page</label>
|
284 |
+
</div>
|
285 |
+
</td>
|
286 |
+
</tr>
|
287 |
+
</table>
|
288 |
+
<table class="form-table <?php echo $active_tab == 'advanced_options' ? 'nav-tab-active' : ''; ?>">
|
289 |
+
<tr>
|
290 |
+
<th colspan="2"><h2>Advanced Settings</h2></th>
|
291 |
+
</tr>
|
292 |
+
<tr valign="top">
|
293 |
+
<th scope="row">Click tracking: <a href="<?php echo CNB_SUPPORT; ?>click-tracking/<?php cnb_utm_params("question-mark", "click-tracking"); ?>" target="_blank" class="nounderscore">
|
294 |
+
<span class="dashicons dashicons-editor-help"></span>
|
295 |
+
</a></th>
|
296 |
+
<td>
|
297 |
+
<div class="radio-item">
|
298 |
+
<input id="tracking3" type="radio" name="cnb[tracking]" value="0" <?php checked('0', $cnb_options['tracking']); ?> />
|
299 |
+
<label for="tracking3">Disabled</label>
|
300 |
+
</div>
|
301 |
+
<div class="radio-item">
|
302 |
+
<input id="tracking4" type="radio" name="cnb[tracking]" value="3" <?php checked('3', $cnb_options['tracking']); ?> />
|
303 |
+
<label for="tracking4">Latest Google Analytics (gtag.js)</label>
|
304 |
+
</div>
|
305 |
+
<div class="radio-item">
|
306 |
+
<input id="tracking1" type="radio" name="cnb[tracking]" value="2" <?php checked('2', $cnb_options['tracking']); ?> />
|
307 |
+
<label for="tracking1">Google Universal Analytics (analytics.js)</label>
|
308 |
+
</div>
|
309 |
+
<div class="radio-item">
|
310 |
+
<input id="tracking2" type="radio" name="cnb[tracking]" value="1" <?php checked('1', $cnb_options['tracking']); ?> />
|
311 |
+
<label for="tracking2">Classic Google Analytics (ga.js)</label>
|
312 |
+
</div>
|
313 |
+
<p class="description">Using Google Tag Manager? Set up click tracking in GTM. <a href="<?php echo CNB_SUPPORT; ?>click-tracking/google-tag-manager-event-tracking/<?php cnb_utm_params("description_link", "google-tag-manager-event-tracking"); ?>" target="_blank">Learn how to do this...</a></p>
|
314 |
+
</td>
|
315 |
+
</tr>
|
316 |
+
<tr valign="top">
|
317 |
+
<th scope="row">Google Ads: <a href="<?php echo CNB_SUPPORT; ?>google-ads/<?php cnb_utm_params("question-mark", "google-ads"); ?>" target="_blank" class="nounderscore">
|
318 |
+
<span class="dashicons dashicons-editor-help"></span>
|
319 |
+
</a></th>
|
320 |
+
<td class="conversions">
|
321 |
+
<div class="radio-item">
|
322 |
+
<input name="cnb[conversions]" type="radio" value="0" <?php checked('0', $cnb_options['conversions']); ?> /> <label for="conversions">Off </label>
|
323 |
+
</div>
|
324 |
+
<div class="radio-item">
|
325 |
+
<input name="cnb[conversions]" type="radio" value="1" <?php checked('1', $cnb_options['conversions']); ?> /> <label for="conversions">Conversion Tracking using Google's global site tag </label>
|
326 |
+
</div>
|
327 |
+
<div class="radio-item">
|
328 |
+
<input name="cnb[conversions]" type="radio" value="2" <?php checked('2', $cnb_options['conversions']); ?> /> <label for="conversions">Conversion Tracking using JavaScript</label>
|
329 |
+
</div>
|
330 |
+
<p class="description">Select this option if you want to track clicks on the button as Google Ads conversions. This option requires the Event snippet to be present on the page. <a href="https">Learn more...</a></p>
|
331 |
+
</td>
|
332 |
+
</tr>
|
333 |
+
<tr valign="top" class="zoom">
|
334 |
+
<th scope="row">Button size (<span id="cnb_slider_value"></span>):</th>
|
335 |
+
<td>
|
336 |
+
<label class="cnb_slider_value">Smaller « </label>
|
337 |
+
<input type="range" min="0.7" max="1.3" name="cnb[zoom]" value="<?php echo $cnb_options['zoom']; ?>" class="slider" id="cnb_slider" step="0.1">
|
338 |
+
<label class="cnb_slider_value"> » Bigger</label>
|
339 |
+
</td>
|
340 |
+
</tr>
|
341 |
+
<tr valign="top" class="z-index">
|
342 |
+
<th scope="row">Order (<span id="cnb_order_value"></span>): <a href="https://callnowbutton.com/set-order/" target="_blank" class="nounderscore">
|
343 |
+
<span class="dashicons dashicons-editor-help"></span>
|
344 |
+
</a></th>
|
345 |
+
<td>
|
346 |
+
<label class="cnb_slider_value">Backwards « </label>
|
347 |
+
<input type="range" min="1" max="10" name="cnb[z-index]" value="<?php echo $cnb_options['z-index']; ?>" class="slider2" id="cnb_order_slider" step="1">
|
348 |
+
<label class="cnb_slider_value"> » Front</label>
|
349 |
+
<p class="description">The default (and recommended) value is all the way to the front so the button sits on top of everything else. In case you have a specific usecase where you want something else to sit in front of the Call Now Button (e.g. a chat window or a cookie notice) you can move this backwards one step at a time to adapt it to your situation.</p>
|
350 |
+
</td>
|
351 |
+
</tr>
|
352 |
+
<?php if($cnb_options['classic'] == 1) { ?>
|
353 |
+
<tr valign="top" class="classic">
|
354 |
+
<th scope="row">Classic button: <a href="https://callnowbutton.com/new-button-design/<?php cnb_utm_params("question-mark", "new-button-design"); ?>" target="_blank" class="nounderscore">
|
355 |
+
<span class="dashicons dashicons-editor-help"></span>
|
356 |
+
</a></th>
|
357 |
+
<td>
|
358 |
+
<input id="classic" name="cnb[classic]" type="checkbox" value="1" <?php checked('1', $cnb_options['classic']); ?> /> <label title="Enable" for="classic">Active</label>
|
359 |
+
</td>
|
360 |
+
</tr>
|
361 |
+
<?php } ?>
|
362 |
+
</table>
|
363 |
+
|
364 |
<input type="hidden" name="cnb[version]" value="<?php echo CNB_VERSION; ?>" />
|
365 |
<p class="submit"><input type="submit" class="button-primary" value="<?php _e('Save Changes') ?>" /></p>
|
|
|
366 |
</form>
|
367 |
|
368 |
<div class="feedback-collection">
|
369 |
<div class="cnb-clear"></div>
|
370 |
+
<p class="cnb-url cnb-center"><a href="https://callnowbutton.com" target="_blank">callnowbutton.com</a></p>
|
|
|
|
|
371 |
|
372 |
<p class="cnb-center cnb-spacing">
|
373 |
+
<a href="<?php echo CNB_SUPPORT; cnb_utm_params("footer-links", "support"); ?>" target="_blank" title="Support">Support</a> ·
|
374 |
+
<a href="<?php echo CNB_WEBSITE; ?>feature-request/<?php cnb_utm_params("footer-links", "suggestions"); ?>" target="_blank" title="Feature Requests">Suggestions</a> ·
|
375 |
<a href="#donate" id="paypalLink">Donate</a> ·
|
376 |
+
<a href="<?php echo CNB_WEBSITE; ?>praise/<?php cnb_utm_params("footer-links", "thanks"); ?>" target="_blank" title="Praise">Just say thanks :-)</a>
|
377 |
</p>
|
378 |
<!--// Display notification about the testing program -->
|
379 |
<div class="postbox cnb-alert-box cnb-center">
|
380 |
+
<p>The Call Now Button <b>Pro</b> is imminent.
|
381 |
+
<a class="cnb-external" href="https://callnowbutton.com/be-notified-call-now-button-pro/<?php cnb_utm_params("footer-links", "notify-of-pro"); ?>" rel="help" target="_blank">Be the first to know!</a>
|
382 |
</p>
|
383 |
</div>
|
384 |
|
|
|
385 |
<div class="donate cnb-center">
|
386 |
<form action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_top">
|
387 |
<input type="hidden" name="cmd" value="_s-xclick">
|
396 |
if(get_option('cnb') && !is_admin()) {
|
397 |
|
398 |
$cnb_options = get_option('cnb');
|
399 |
+
$cnb_enabled = (isset($cnb_options['active'])) ? true : false;
|
400 |
+
|
401 |
+
if($cnb_enabled) {
|
402 |
function cnb_head() {
|
403 |
+
global $cnb_options;
|
404 |
+
$cnb_has_text = ($cnb_options['text'] == '') ? false : true;
|
405 |
+
$cnb_is_full_width = $cnb_options['appearance'] == "full" || $cnb_options['appearance'] == "tfull" ? true : false;
|
406 |
+
$cnb_is_classic = isset($cnb_options['classic']) && $cnb_options['classic'] == 1 && !$cnb_has_text ? true : false;
|
407 |
+
$cnb_button_css = "\n<!-- Call Now Button ".CNB_VERSION." by Jerry Rietveld (callnowbutton.com) -->\n";
|
408 |
+
|
409 |
+
|
410 |
$ButtonExtra = "";
|
411 |
+
if($cnb_is_classic) {
|
412 |
|
413 |
// OLD BUTTON DESIGN
|
414 |
+
if($cnb_options['appearance'] == 'full' || $cnb_options['appearance'] == 'middle' || $cnb_has_text) {
|
415 |
+
$cnb_button_appearance = "width:100%;left:0;";
|
416 |
$ButtonExtra = "body {padding-bottom:60px;}";
|
417 |
}
|
418 |
elseif($cnb_options['appearance'] == 'left') {
|
419 |
+
$cnb_button_appearance = "width:100px;left:0;border-bottom-right-radius:40px; border-top-right-radius:40px;";
|
420 |
} else {
|
421 |
+
$cnb_button_appearance = "width:100px;right:0;border-bottom-left-radius:40px; border-top-left-radius:40px;";
|
422 |
}
|
423 |
|
424 |
+
$cnb_button_css .= "<style>#callnowbutton, #callnowbutton span {display:none;} @media screen and (max-width:650px){#callnowbutton .NoButtonText{display:none;}#callnowbutton {display:block; ".$cnb_button_appearance." height:80px; position:fixed; bottom:-20px; border-top:2px solid ".changeColor($cnb_options['color'],'lighter')."; background:url(data:image/svg+xml;base64,".svg(changeColor($cnb_options['color'], 'darker'),$cnb_options['iconcolor'] ).") center 2px no-repeat ".$cnb_options['color']."; text-decoration:none; box-shadow:0 0 5px #888; z-index:".zindex($cnb_options['z-index']).";background-size:58px 58px}".$ButtonExtra."}</style>\n";
|
425 |
|
426 |
} else {
|
427 |
+
|
428 |
+
// NEW BUTTON DESIGN
|
429 |
+
$cnb_button_shape = "width:65px; height:65px; border-radius:50%; box-shadow: 0 3px 6px rgba(0, 0, 0, 0.3);transform: scale(" . $cnb_options['zoom'] . ");";
|
430 |
+
$cnb_button_positions = array(
|
431 |
+
'middle' => 'bottom:15px; left:50%; margin-left:-33px;',
|
432 |
+
'left' => 'bottom:15px; left:20px;',
|
433 |
+
'right' => 'bottom:15px; right:20px;',
|
434 |
+
'mleft' => 'top:50%; margin-top:-33px; left:20px;',
|
435 |
+
'mright' => 'top:50%; margin-top:-33px; right:20px;',
|
436 |
+
'tleft' => 'top:15px; left:20px;',
|
437 |
+
'tmiddle' => 'top:15px; left:50%; margin-left:-33px;',
|
438 |
+
'tright' => 'top:15px; right:20px;',
|
439 |
+
);
|
440 |
+
|
441 |
+
if($cnb_options['appearance'] == 'full' || $cnb_options['appearance'] == 'tfull') {
|
442 |
+
$cnb_top_or_bottom = ($cnb_options['appearance']) == 'full' ? "bottom" : "top";
|
443 |
+
|
444 |
+
$cnb_button_appearance = "width:100%;left:0;".$cnb_top_or_bottom.":0;height:60px;";
|
445 |
+
|
446 |
+
$ButtonExtra = "body {padding-".$cnb_top_or_bottom.":60px;}#callnowbutton img {transform: scale(" . $cnb_options['zoom'] . ");}";
|
447 |
+
if($cnb_has_text) {
|
448 |
+
$cnb_button_appearance .= "text-align:center;color:#fff; font-weight:600; font-size:120%; overflow: hidden;";
|
449 |
+
if(isset($cnb_options['hideIcon']) && $cnb_options['hideIcon'] == 1) {
|
450 |
+
$cnb_button_appearance .= 'padding-right:20px;';
|
451 |
}
|
452 |
}
|
453 |
+
} else {
|
454 |
+
$cnb_button_appearance = $cnb_button_shape . $cnb_button_positions[$cnb_options['appearance']];
|
|
|
|
|
|
|
|
|
455 |
}
|
456 |
+
|
457 |
+
$cnb_label_side = ltrim(ltrim($cnb_options['appearance'],"m"),"t");
|
458 |
+
|
459 |
+
if($cnb_has_text && ($cnb_options['appearance'] == 'middle' || $cnb_options['appearance'] == 'tmiddle')) { // don't show the label in this situation
|
460 |
+
$circularButtonTextCSS = "#callnowbutton span{display: none;";
|
461 |
+
} elseif($cnb_has_text && !$cnb_is_full_width){
|
462 |
+
$circularButtonTextCSS = "#callnowbutton span{
|
463 |
+
display: block;
|
464 |
+
width: auto;
|
465 |
+
background: rgba(243, 243, 243, 0.96);
|
466 |
+
border-top:1px solid rgba(243, 243, 243, 1);
|
467 |
+
position: absolute;"
|
468 |
+
.$cnb_label_side.": 74px;
|
469 |
+
border-radius: 5px;
|
470 |
+
padding: 2px 15px;
|
471 |
+
font-size: 15px;
|
472 |
+
color: #505050;
|
473 |
+
top: 20px;
|
474 |
+
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2);
|
475 |
+
word-break: keep-all;
|
476 |
+
line-height: 1;
|
477 |
+
}";
|
478 |
+
} elseif(!$cnb_is_full_width) {
|
479 |
+
$circularButtonTextCSS = "#callnowbutton span{display:none;}";
|
480 |
+
} else {
|
481 |
+
$circularButtonTextCSS = "";
|
482 |
}
|
483 |
|
484 |
+
$cnb_button_css = $cnb_button_css ."<style>";
|
485 |
+
$cnb_button_css .= "#callnowbutton {display:none;} @media screen and (max-width:650px){#callnowbutton {display:block; position:fixed; text-decoration:none; z-index:".zindex($cnb_options['z-index']).";";
|
486 |
+
$cnb_button_css .= $cnb_button_appearance;
|
487 |
+
if($cnb_is_full_width) {
|
488 |
+
$cnb_button_css .= "background:".$cnb_options['color'].";display: flex; justify-content: center; align-items: center;text-shadow: 0 1px 0px rgba(0, 0, 0, 0.18);";
|
489 |
} else {
|
490 |
+
$cnb_button_css .= "background:url(data:image/svg+xml;base64,".svg(changeColor($cnb_options['color'], 'darker'),$cnb_options['iconcolor'] ).") center/45px 45px no-repeat ".$cnb_options['color'].";";
|
491 |
}
|
492 |
+
$cnb_button_css .= "}" . $ButtonExtra . "}" . $circularButtonTextCSS;
|
493 |
+
$cnb_button_css .= "</style>\n";
|
494 |
+
|
495 |
}
|
496 |
+
echo $cnb_button_css;
|
497 |
}
|
498 |
add_action('wp_head', 'cnb_head');
|
499 |
|
500 |
function cnb_footer() {
|
501 |
+
global $cnb_options;
|
502 |
+
|
503 |
+
$cnb_hide_icon = isset($cnb_options['hideIcon']) && $cnb_options['hideIcon'] == 1 ? true : false;
|
504 |
+
$cnb_has_text = ($cnb_options['text'] == '') ? false : true;
|
505 |
+
$cnb_is_classic = isset($cnb_options['classic']) && $cnb_options['classic'] == 1 ? true : false;
|
506 |
+
$cnb_show_limited = isset($cnb_options['show']) && $cnb_options['show'] != '' ? true : false;
|
507 |
+
$cnb_show_included = $cnb_options['limit'] == 'include' ? true : false;
|
508 |
+
$cnb_click_tracking = $cnb_options['tracking'] > 0 ? true : false;
|
509 |
+
$cnb_is_full_width = $cnb_options['appearance'] == 'full' || $cnb_options['appearance'] == 'tfull' ? true : false;
|
510 |
+
$cnb_hide_frontpage = isset($cnb_options['frontpage']) && $cnb_options['frontpage'] == 1 ? true : false;
|
511 |
+
$cnb_conversion_tracking = $cnb_options['conversions'] > 0 ? true : false;
|
512 |
+
|
513 |
+
if($cnb_show_limited) {
|
514 |
+
$cnb_show_ids = explode(',', str_replace(' ', '' ,$cnb_options['show']));
|
515 |
}
|
516 |
|
517 |
+
if($cnb_click_tracking) {
|
518 |
+
$cnb_tracking_code[1] = "_gaq.push(['_trackEvent', 'Contact', 'Call Now Button', 'Phone']);";
|
519 |
+
$cnb_tracking_code[2] = "ga('send', 'event', 'Contact', 'Call Now Button', 'Phone');";
|
520 |
+
$cnb_tracking_code[3] = "gtag('event', 'Call Now Button', {event_category: 'contact', event_label: 'phone'});";
|
521 |
+
$cnb_tracking_code = $cnb_tracking_code[$cnb_options['tracking']];
|
|
|
522 |
} else {
|
523 |
+
$cnb_tracking_code = "";
|
524 |
}
|
525 |
|
526 |
+
if($cnb_conversion_tracking) {
|
527 |
+
$cnb_conversion_code[1] = "return gtag_report_conversion('tel:".$cnb_options['number']."');";
|
528 |
+
$cnb_conversion_code[2] = "goog_report_conversion('tel:".$cnb_options['number']."');";
|
529 |
+
$cnb_conversion_code = $cnb_conversion_code[$cnb_options['conversions']];
|
530 |
} else {
|
531 |
+
$cnb_conversion_code = "";
|
532 |
}
|
533 |
|
534 |
+
$cnb_onclick_events = $cnb_click_tracking || $cnb_conversion_tracking ? 'onclick="' . $cnb_tracking_code . $cnb_conversion_code . '"' : "";
|
535 |
+
|
536 |
+
if(!$cnb_has_text && !$cnb_is_full_width) {
|
537 |
+
$cnb_button_text = '<span>Call Now Button</span>';
|
538 |
+
} elseif(!$cnb_has_text && $cnb_is_full_width) {
|
539 |
+
$cnb_button_text = '<img alt="Call Now Button" src="data:image/svg+xml;base64,'.svg(changeColor($cnb_options['color'], 'darker'),$cnb_options['iconcolor']).'" width="40">';
|
540 |
+
} elseif($cnb_hide_icon && $cnb_is_full_width) {
|
541 |
+
$cnb_button_text = '<span style="color:'.$cnb_options['iconcolor'].'">'. $cnb_options['text'] . '</span>';
|
542 |
+
} elseif($cnb_is_full_width) {
|
543 |
+
$cnb_button_text = '<img alt="Call Now Button" src="data:image/svg+xml;base64,'.svg(changeColor($cnb_options['color'], 'darker'),$cnb_options['iconcolor']).'" width="40"><span style="color:'.$cnb_options['iconcolor'].'">'. $cnb_options['text'] . '</span>';
|
544 |
+
} else {
|
545 |
+
$cnb_button_text = '<span>'.str_replace(" ", " ", $cnb_options['text']).'</span>';
|
546 |
+
}
|
547 |
+
|
548 |
+
$cnb_call_link = '<a href="tel:'.$cnb_options['number'].'" id="callnowbutton" '.$cnb_onclick_events.'>'.$cnb_button_text.'</a>';
|
549 |
|
550 |
+
if(is_front_page()) {
|
551 |
+
if(!$cnb_hide_frontpage) {
|
552 |
+
echo $cnb_call_link;
|
553 |
+
}
|
554 |
+
} elseif($cnb_show_limited) {
|
555 |
+
if($cnb_show_included) {
|
556 |
+
if(is_single($cnb_show_ids) || is_page($cnb_show_ids)) {
|
557 |
+
echo $cnb_call_link;
|
558 |
}
|
559 |
} else {
|
560 |
+
if(!is_single($cnb_show_ids) && !is_page($cnb_show_ids)) {
|
561 |
+
echo $cnb_call_link;
|
562 |
}
|
563 |
}
|
564 |
} else {
|
565 |
+
echo $cnb_call_link;
|
566 |
}
|
567 |
}
|
568 |
add_action('wp_footer', 'cnb_footer');
|
576 |
'number' => '',
|
577 |
'text' => '',
|
578 |
'hideIcon' => 0,
|
579 |
+
'color' => '#00bb00',
|
580 |
+
'iconcolor' => '#ffffff',
|
581 |
'appearance' => 'right',
|
582 |
'tracking' => 0,
|
583 |
+
'conversions' => 0,
|
584 |
'show' => '',
|
585 |
'limit' => 'include',
|
586 |
+
'frontpage' => 0,
|
587 |
'zoom' => '1',
|
588 |
'z-index' => '10',
|
589 |
'version' => CNB_VERSION
|
613 |
}
|
614 |
function cnb_update_options() {
|
615 |
$cnb_options = get_option('cnb');
|
|
|
616 |
if(cnb_update_needed()) { // Check current version and if it needs an update
|
617 |
$cnb_options['active'] = isset($cnb_options['active']) ? 1 : 0;
|
618 |
$cnb_options['text'] = isset($cnb_options['text']) ? $cnb_options['text'] : "";
|
619 |
+
$cnb_options['iconcolor'] = isset($cnb_options['iconcolor']) ? $cnb_options['iconcolor'] : '#ffffff';
|
620 |
+
$cnb_options['appearance'] = $cnb_options['text'] != "" ? "full" : $cnb_options['appearance'];
|
621 |
$cnb_options['hideIcon'] = isset($cnb_options['hideIcon']) ? $cnb_options['hideIcon'] : 0;
|
622 |
$cnb_options['limit'] = isset($cnb_options['limit']) ? $cnb_options['limit'] : 'include';
|
623 |
+
$cnb_options['frontpage'] = isset($cnb_options['frontpage']) ? $cnb_options['frontpage'] : 0;
|
624 |
+
$cnb_options['conversions'] = isset($cnb_options['conversions']) ? 1 : 0;
|
625 |
+
$cnb_options['zoom'] = isset($cnb_options['zoom']) ? $cnb_options['zoom'] : 1;
|
626 |
+
$cnb_options['z-index'] = isset($cnb_options['z-index']) ? $cnb_options['z-index'] : 10;
|
627 |
$default_options = array(
|
628 |
'active' => $cnb_options['active'],
|
629 |
'number' => $cnb_options['number'],
|
630 |
'text' => $cnb_options['text'],
|
631 |
'hideIcon' => $cnb_options['hideIcon'],
|
632 |
'color' => $cnb_options['color'],
|
633 |
+
'iconcolor' => $cnb_options['iconcolor'],
|
634 |
'appearance' => $cnb_options['appearance'],
|
635 |
'tracking' => $cnb_options['tracking'],
|
636 |
+
'conversions' => $cnb_options['conversions'],
|
637 |
'show' => $cnb_options['show'],
|
638 |
'limit' => $cnb_options['limit'],
|
639 |
+
'frontpage' => $cnb_options['frontpage'],
|
640 |
+
'zoom' => $cnb_options['zoom'],
|
641 |
+
'z-index' => $cnb_options['z-index'],
|
642 |
'version' => CNB_VERSION
|
643 |
);
|
644 |
if(array_key_exists('classic', $cnb_options) && $cnb_options['classic'] == 1 ) {
|
654 |
// Color functions to calculate borders
|
655 |
function changeColor($color, $direction) {
|
656 |
if(!preg_match('/^#?([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})$/i', $color, $parts));
|
657 |
+
if(!isset($direction) || $direction == "lighter") { $change = 45; } else { $change = -30; }
|
658 |
for($i = 1; $i <= 3; $i++) {
|
659 |
$parts[$i] = hexdec($parts[$i]);
|
660 |
$parts[$i] = round($parts[$i] + $change);
|
665 |
return $output;
|
666 |
}
|
667 |
|
668 |
+
function svg($color, $icon) {
|
669 |
+
$phone = '<path d="M7.104 14.032l15.586 1.984c0 0-0.019 0.5 0 0.953c0.029 0.756-0.26 1.534-0.809 2.1 l-4.74 4.742c2.361 3.3 16.5 17.4 19.8 19.8l16.813 1.141c0 0 0 0.4 0 1.1 c-0.002 0.479-0.176 0.953-0.549 1.327l-6.504 6.505c0 0-11.261 0.988-25.925-13.674C6.117 25.3 7.1 14 7.1 14" fill="'.$color.'"/><path d="M7.104 13.032l6.504-6.505c0.896-0.895 2.334-0.678 3.1 0.35l5.563 7.8 c0.738 1 0.5 2.531-0.36 3.426l-4.74 4.742c2.361 3.3 5.3 6.9 9.1 10.699c3.842 3.8 7.4 6.7 10.7 9.1 l4.74-4.742c0.897-0.895 2.471-1.026 3.498-0.289l7.646 5.455c1.025 0.7 1.3 2.2 0.4 3.105l-6.504 6.5 c0 0-11.262 0.988-25.925-13.674C6.117 24.3 7.1 13 7.1 13" fill="'.$icon.'"/>';
|
670 |
$svg = '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 60 60">' . $phone . '</svg>';
|
671 |
return base64_encode($svg);
|
672 |
}
|
719 |
}
|
720 |
return array($active,$name);
|
721 |
}
|
722 |
+
function cnb_utm_params($element, $page) {
|
723 |
+
$output = "?utm_source=wp-plugin";
|
724 |
+
$output .= "&utm_medium=referral";
|
725 |
+
$output .= "&utm_campaign=" . $element;
|
726 |
+
$output .= "&utm_term=" . $page;
|
727 |
+
echo $output;
|
728 |
+
}
|
729 |
?>
|
readme.txt
CHANGED
@@ -1,31 +1,35 @@
|
|
1 |
=== Plugin Name ===
|
2 |
Contributors: jgrietveld
|
3 |
Donate link: http://callnowbutton.com/donate/
|
4 |
-
Tags: call
|
5 |
Requires at least: 2.7
|
6 |
-
Tested up to: 5.
|
7 |
-
Stable tag: 0.
|
8 |
License: GPLv2 or later
|
9 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
10 |
|
11 |
-
A very simple yet very effective plugin that adds a Call Now
|
12 |
|
13 |
== Description ==
|
14 |
|
15 |
###What does the plugin do?
|
16 |
|
17 |
-
This plugin places a Call Now
|
18 |
-
No more complicated copy
|
19 |
|
20 |
###Could not be easier!
|
21 |
The settings are very easy: enable and enter your phone number. That's it!
|
22 |
|
23 |
-
If you want to add some text to your button, that's possible. Entering text is fully optional - leaving it empty will show a nice phone
|
24 |
|
25 |
-
|
|
|
26 |
|
27 |
-
|
28 |
-
|
|
|
|
|
|
|
29 |
|
30 |
|
31 |
== Installation ==
|
@@ -38,10 +42,10 @@ Usage at this point is only for responsive websites (websites optimized for disp
|
|
38 |
|
39 |
Or:
|
40 |
|
41 |
-
1. Upload `call-now-button`-folder to the `/wp-content/plugins/` directory
|
42 |
2. Activate the plugin through the 'Plugins' menu in WordPress
|
43 |
3. Go to 'Settings' > 'Call Now Button' and check the box to activate the button and enter your phone number.
|
44 |
-
4. Click 'Save' and
|
45 |
|
46 |
|
47 |
== Frequently Asked Questions ==
|
@@ -50,9 +54,17 @@ Or:
|
|
50 |
|
51 |
In the Settings section on your WordPress Dashboard you'll find a new addition: Call Now Button. Click on it to go to the plugin settings.
|
52 |
|
|
|
|
|
|
|
|
|
53 |
= I don't see the button on my website but I'm looking at it with my mobile phone. Why? =
|
54 |
|
55 |
-
|
|
|
|
|
|
|
|
|
56 |
|
57 |
= My website is responsive but I don't see the button
|
58 |
|
@@ -66,38 +78,49 @@ You have a caching plugin active on your website and you are looking at a cached
|
|
66 |
|
67 |
You have a caching plugin active on your website and the cached pages are showing an older version of your website. Delete/empty the cache and reload the pages.
|
68 |
|
|
|
|
|
69 |
= Do I have to add a country code to my phone number? =
|
70 |
|
71 |
You don't have to but I recommend that you do to increase your options internationally.
|
72 |
|
73 |
= Do I start the number with + or 00? =
|
74 |
|
75 |
-
|
76 |
|
77 |
= Can I change the appearance of the Call Now Button? =
|
78 |
|
79 |
-
Yes! You can easily change the color of the button and make it sit in the
|
80 |
|
81 |
= I only want to show the button on a few pages. Is that possible?
|
82 |
|
83 |
-
Yes, you can
|
84 |
|
85 |
= I need way more flexibility! Isn't there a PRO version that I can use? =
|
86 |
|
87 |
-
|
88 |
|
89 |
|
90 |
== Screenshots ==
|
91 |
|
92 |
-
1.
|
93 |
-
2. The
|
94 |
-
3.
|
95 |
-
4.
|
96 |
-
5. Advanced Settings: More options
|
97 |
|
98 |
|
99 |
== Changelog ==
|
100 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
101 |
= 0.3.6 =
|
102 |
* Validation fixes
|
103 |
* Zoom controls icon size in Full Width buttons
|
1 |
=== Plugin Name ===
|
2 |
Contributors: jgrietveld
|
3 |
Donate link: http://callnowbutton.com/donate/
|
4 |
+
Tags: call button, click to call, convert, call now button, contact button
|
5 |
Requires at least: 2.7
|
6 |
+
Tested up to: 5.4
|
7 |
+
Stable tag: 0.4.0
|
8 |
License: GPLv2 or later
|
9 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
10 |
|
11 |
+
A very simple yet very effective and flexible plugin that adds a Call Now Button to your website for mobile visitors (only for responsive websites).
|
12 |
|
13 |
== Description ==
|
14 |
|
15 |
###What does the plugin do?
|
16 |
|
17 |
+
This plugin places a Call Now Button (click-to-call button) to the bottom of the screen which is only visible for your mobile visitors. Because your mobile visitors already have a phone in their hands this plugin will allow them to call you with one simple touch of the button.
|
18 |
+
No more navigating to the contact page and no more complicated copy/pasting or memorizing the phone number!
|
19 |
|
20 |
###Could not be easier!
|
21 |
The settings are very easy: enable and enter your phone number. That's it!
|
22 |
|
23 |
+
If you want to add some text to your button, that's possible. Entering text is fully optional - leaving it empty will show a nice circular phone button to your visitors (have a look at the screenshots).
|
24 |
|
25 |
+
####Need more control?
|
26 |
+
Under the **Presentation tab** you can change the color of the button, move it to a differet location on the screen and limit the pages on which the button should be visible.
|
27 |
|
28 |
+
Under the **Advanced tab** you'll find a bunch of settings that allow you to enable click tracking in Google Analytics, fire a conversion tag so a call is registered as a conversion in Google Ads, adjust the size of the button or move the button further backwards in case you want something else to sit on top of it (e.g. your privacy notice).
|
29 |
+
|
30 |
+
|
31 |
+
### For mobile optimized (responsive) themes
|
32 |
+
The button is super light and fully build in CSS. The only requirement is that your website's theme is responsive, meaning it adapts to the size of the screen.
|
33 |
|
34 |
|
35 |
== Installation ==
|
42 |
|
43 |
Or:
|
44 |
|
45 |
+
1. Upload the `call-now-button`-folder to the `/wp-content/plugins/` directory
|
46 |
2. Activate the plugin through the 'Plugins' menu in WordPress
|
47 |
3. Go to 'Settings' > 'Call Now Button' and check the box to activate the button and enter your phone number.
|
48 |
+
4. Click 'Save' and your Call Now Button is live!
|
49 |
|
50 |
|
51 |
== Frequently Asked Questions ==
|
54 |
|
55 |
In the Settings section on your WordPress Dashboard you'll find a new addition: Call Now Button. Click on it to go to the plugin settings.
|
56 |
|
57 |
+
= Can I add text to the button? =
|
58 |
+
|
59 |
+
Yes, it is possible to add text to your button. You can chose to show the text inside the full width button across the bottom or top of the screen. It's also possible to add a text bubble next to the circular button. This works for all placements with the exception of the center button positions at the top an bottom of the screen.
|
60 |
+
|
61 |
= I don't see the button on my website but I'm looking at it with my mobile phone. Why? =
|
62 |
|
63 |
+
First step is to check if the button is enabled - this is the first checkbox on the settings page.
|
64 |
+
|
65 |
+
Next thing is to make sure that your theme is responsive. Responsive means that the website adapts to the size of the screen it's being viewed on. Simply put, if you need to zoom in to be able to read the text of your website on your mobile phone, the plugin will not work.
|
66 |
+
|
67 |
+
Last thing to check is if you have a caching plugin installed. Caching plugins make your website faster by showing a copy of your website instead of the actual website. As a consequence you will not see the Call Now Button because the copy was made before the button was installed. To fix this, go to your cache plugin settings page and empty the cache (sometimes called flush the cache). After doing this you should see the button. Do the same thing each time you make changes to the button.
|
68 |
|
69 |
= My website is responsive but I don't see the button
|
70 |
|
78 |
|
79 |
You have a caching plugin active on your website and the cached pages are showing an older version of your website. Delete/empty the cache and reload the pages.
|
80 |
|
81 |
+
Another option could be that you have set the Call Now Button to only appear on specific pages. Go into the Call Now Button settings, open the Presentation tab and check that the field next to Limit appearance is empty.
|
82 |
+
|
83 |
= Do I have to add a country code to my phone number? =
|
84 |
|
85 |
You don't have to but I recommend that you do to increase your options internationally.
|
86 |
|
87 |
= Do I start the number with + or 00? =
|
88 |
|
89 |
+
In most countries you'll be fine using either but there are some exceptions. To be on the safe side I would recommend using the plus sign.
|
90 |
|
91 |
= Can I change the appearance of the Call Now Button? =
|
92 |
|
93 |
+
Yes! You can easily change the color of the button and make it sit in any of the 8 preset locations across the screen of a phone. You also have the option to spread it out over the full bottom or top of the phone screen.
|
94 |
|
95 |
= I only want to show the button on a few pages. Is that possible?
|
96 |
|
97 |
+
Yes, you can enter the IDs of posts and pages you wish to include or exclude.
|
98 |
|
99 |
= I need way more flexibility! Isn't there a PRO version that I can use? =
|
100 |
|
101 |
+
This is coming very soon. We're currently looking for testers so if you want to give it a try already, please sign up at [callnowbutton.com](https://callnowbutton.com/).
|
102 |
|
103 |
|
104 |
== Screenshots ==
|
105 |
|
106 |
+
1. 3 variations of the Call Now Button
|
107 |
+
2. The basic settings
|
108 |
+
3. The presentation settings
|
109 |
+
4. The advanced settings
|
|
|
110 |
|
111 |
|
112 |
== Changelog ==
|
113 |
|
114 |
+
= 0.4.0 =
|
115 |
+
* Tabbed admin interface
|
116 |
+
* Google Ads conversion tracking
|
117 |
+
* Text bubbles for standard circular buttons
|
118 |
+
* 6 additional button placements
|
119 |
+
* Hide button on the front page
|
120 |
+
* Change the color of the icon
|
121 |
+
* Small design changes
|
122 |
+
* Other small plugin improvements
|
123 |
+
|
124 |
= 0.3.6 =
|
125 |
* Validation fixes
|
126 |
* Zoom controls icon size in Full Width buttons
|