-
Notifications
You must be signed in to change notification settings - Fork 0
/
rula-pb-book-analytics.php
100 lines (89 loc) · 2.93 KB
/
rula-pb-book-analytics.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
<?php
/*
* Plugin Name: Pressbooks - Book Level Analytics
* Plugin URI: https://github.com/ryersonlibrary/rula_pb_book_analytics
* Author: Ryerson University Library & Archives
* Author URI: https://github.com/ryersonlibrary
* Description: Enables book level analytics for Pressbooks on a subdirectory installation (Pressbooks only supports this on subdomain installations).
* GitHub Plugin URI: https://github.com/ryersonlibrary/rula_pb_book_analytics
* Version: 0.0.3
*/
function rula_pb_add_book_analytics_menu() {
add_options_page(
__('Google Analytics', 'rula_pb'),
__('Google Analytics', 'rula_pb'),
'manage_options',
'rula_pb_book_analytics',
'rula_pb_display_book_analytics_settings'
);
}
function rula_pb_display_book_analytics_settings() {
?>
<div class="wrap">
<h2><?php _e( 'Google Analytics', 'rula_pb' ); ?></h2>
<form method="POST" action="options.php">
<?php
settings_fields( 'rula_pb_book_analytics' );
do_settings_sections( 'rula_pb_book_analytics' );
?>
<?php submit_button(); ?>
</form>
</div>
<?php
}
function rula_pb_book_analytics_settings_init() {
$_section = 'rula_pb_book_analytics';
$_page = 'rula_pb_book_analytics';
add_settings_section(
$_section,
'',
'\rula_pb_analytics_settings_section_callback',
$_page
);
add_settings_field(
'rula_pb_ga_id',
__( 'Google Analytics ID', 'rula_pb' ),
'\rula_pb_book_analytics_callback',
$_page,
$_section,
[
__( 'The Google Analytics ID for your book, e.g. ‘UA-01234567-8’.', 'rula_pb' ),
]
);
register_setting(
$_page,
'rula_pb_ga_id',
[
'type' => 'string',
'default' => '',
]
);
}
function rula_pb_analytics_settings_section_callback() {
echo '<p>' . __( 'Google Analytics settings.', 'rula_pb' ) . '</p>';
}
function rula_pb_book_analytics_callback( $args ) {
$rula_pb_ga_id = get_option( 'rula_pb_ga_id' );
$html = '<input type="text" id="rula_pb_ga_id" name="rula_pb_ga_id" value="' . $rula_pb_ga_id . '" />';
$html .= '<p class="description">' . $args[0] . '</p>';
echo $html;
}
function rula_pb_print_analytics() {
$analytics_code = get_option('rula_pb_ga_id');
$tracking_html = "";
$tracking_html .= "ga('create', '{$analytics_code}', 'auto', 'bookTracker');\n";
$tracking_html .= "ga('bookTracker.send', 'pageview');\n";
$html = '';
$html .= "<script>\n{$tracking_html}</script>\n";
if( !empty( $analytics_code ) ) {
echo $html;
}
}
function rula_pb_download_tracking_code( $tracking, $filetype, $title ) {
$tracking .= "ga('bookTracker.send','event','exportFiles','Downloads','{$title}:{$filetype}');";
return $tracking;
}
add_filter('pressbooks_download_tracking_code', 'rula_pb_download_tracking_code', 10, 3);
add_action( 'admin_menu', 'rula_pb_add_book_analytics_menu' );
add_action( 'admin_init', 'rula_pb_book_analytics_settings_init' );
add_action( 'wp_footer', 'rula_pb_print_analytics');