-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathtracking-for-divi.php
77 lines (66 loc) · 2.29 KB
/
tracking-for-divi.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
<?php
/**
* WordPress plugin to send tracking events on successful Divi form submission.
*
* @package tracking-for-divi
* @license Apache-2.0
* @author Kuba Serafinowski
*
* Plugin Name: Tracking for Divi
* Plugin URI: https://github.com/zizzfizzix/tracking-for-divi
* Description: Track successful Divi contact form submissions.
* Author: Kuba Serafinowski
* Author URI: https://kuba.wtf/
* Text Domain: tracking-for-divi
* Domain Path: /languages
* Version: 0.2.0
*/
namespace DigitallStudio\TrackingForDivi;
require plugin_dir_path( __FILE__ ) . 'vendor/autoload.php';
use Kucrut\Vite;
use DigitallStudio\TrackingForDivi\Admin;
/**
* Load translations
*/
function load_textdomain() {
load_plugin_textdomain( 'tracking-for-divi', false, dirname( plugin_basename( __FILE__ ) ) . '/languages' );
}
add_action( 'init', __NAMESPACE__ . '\load_textdomain' );
/**
* Main function to avoid global variables
*/
function add_front_script(): void {
$theme = wp_get_theme();
if ( 'Divi' === $theme->name || 'Divi' === $theme->parent_theme ) {
add_action(
'wp_enqueue_scripts',
function (): void {
$handle = 'tracking-for-divi';
Vite\enqueue_asset(
__DIR__ . '/js/dist',
'js/client/main.ts',
array(
'handle' => $handle,
'dependencies' => array( 'jquery' ),
'in-footer' => true,
)
);
// Need to assign to window as scripts of type 'module' don't do that automatically (https://stackoverflow.com/a/67415745/7736371) and Vite\enqueue_asset() sets that type for the handle used here.
wp_add_inline_script( $handle, 'window.TRACKING_FOR_DIVI_OPTIONS = ' . wp_json_encode( get_option( 'tracking_for_divi_options' ) ), 'before' );
}
);
}
}
add_front_script();
/**
* Wrap settings bootstrap into a function to avoid global var scope.
*/
function bootstrap_settings() {
define( __NAMESPACE__ . '\PLUGIN_BASENAME', plugin_basename( __FILE__ ) );
$tracking_for_divi_settings_page = new Admin\SettingsPage();
add_action( 'admin_enqueue_scripts', array( $tracking_for_divi_settings_page, 'enqueue_admin_script' ) );
add_filter( 'plugin_action_links_' . PLUGIN_BASENAME, array( $tracking_for_divi_settings_page, 'add_settings_link' ) );
}
if ( is_admin() ) {
bootstrap_settings();
}