PluginProbe
Kit (formerly ConvertKit) – Email Newsletter, Email Marketing, Membership, Subscribers and Landing Pages / 2.5.2
Kit (formerly ConvertKit) – Email Newsletter, Email Marketing, Membership, Subscribers and Landing Pages v2.5.2
3.4.3 3.4.2 3.4.1 3.4.0 3.3.9 3.3.8 3.3.7 3.3.6 3.3.5 3.3.4 3.3.3 3.3.2 3.3.1 2.2.0 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2.6 2.2.7 2.2.8 2.2.9 2.3.0 2.3.1 All 196 releases
← All changes | includes/class-wp-convertkit.php +75 -77 3.3.52.5.2 View file →
@@ -39,27 +39,9 @@
39 39 * @since 1.9.6
40 40 */
41 41 public function __construct() {
42 42
43 - // Initialize classes that have hooks prior to the `init` hook.
44 - // Divi Theme requires us to do this, although the Divi Builder Plugin works fine when loading
45 - // our integration on `init`.
46 - $this->classes['divi'] = new ConvertKit_Divi();
47 - $this->classes['widgets'] = new ConvertKit_Widgets();
48 -
49 - // Initialize Plugin classes on init, so the `_load_textdomain_just_in_time` warning isn't triggered.
50 - add_action( 'init', array( $this, 'initialize' ), 1 );
51 - add_action( 'init', array( $this, 'setup' ), 2 );
52 -
53 - }
54 -
55 - /**
56 - * Initialize classes.
57 - *
58 - * @since 2.7.7
59 - */
60 - public function initialize() {
61 -
43 + // Initialize class(es) to register hooks.
62 44 $this->initialize_admin();
63 45 $this->initialize_admin_or_frontend_editor();
64 46 $this->initialize_cli_cron();
65 47 $this->initialize_frontend();
@@ -64,8 +46,11 @@
64 46 $this->initialize_cli_cron();
65 47 $this->initialize_frontend();
66 48 $this->initialize_global();
67 49
50 + // Load language files.
51 + add_action( 'init', array( $this, 'load_language_files' ) );
52 +
68 53 }
69 54
70 55 /**
71 56 * Initialize classes for the WordPress Administration interface
@@ -78,26 +63,21 @@
78 63 if ( ! is_admin() ) {
79 64 return;
80 65 }
81 66
82 - $this->classes['admin_bulk_edit'] = new ConvertKit_Admin_Bulk_Edit();
83 - $this->classes['admin_cache_plugins'] = new ConvertKit_Admin_Cache_Plugins();
84 - $this->classes['admin_category'] = new ConvertKit_Admin_Category();
85 - $this->classes['admin_landing_page'] = new ConvertKit_Admin_Landing_Page();
86 - $this->classes['admin_importer_activecampaign'] = new ConvertKit_Admin_Importer_ActiveCampaign();
87 - $this->classes['admin_importer_aweber'] = new ConvertKit_Admin_Importer_AWeber();
88 - $this->classes['admin_importer_campaignmonitor'] = new ConvertKit_Admin_Importer_CampaignMonitor();
89 - $this->classes['admin_importer_convertkit_legacy_forms'] = new ConvertKit_Admin_Importer_ConvertKit_Legacy_Forms();
90 - $this->classes['admin_importer_mc4wp'] = new ConvertKit_Admin_Importer_MC4WP();
91 - $this->classes['admin_importer_mailpoet'] = new ConvertKit_Admin_Importer_Mailpoet();
92 - $this->classes['admin_importer_newsletter'] = new ConvertKit_Admin_Importer_Newsletter();
93 - $this->classes['admin_post'] = new ConvertKit_Admin_Post();
94 - $this->classes['admin_quick_edit'] = new ConvertKit_Admin_Quick_Edit();
95 - $this->classes['admin_restrict_content'] = new ConvertKit_Admin_Restrict_Content();
96 - $this->classes['admin_settings'] = new ConvertKit_Admin_Settings();
97 - $this->classes['admin_setup_wizard_landing_page'] = new ConvertKit_Admin_Setup_Wizard_Landing_Page();
98 - $this->classes['admin_setup_wizard_plugin'] = new ConvertKit_Admin_Setup_Wizard_Plugin();
99 - $this->classes['admin_setup_wizard_restrict_content'] = new ConvertKit_Admin_Setup_Wizard_Restrict_Content();
67 + $this->classes['admin_bulk_edit'] = new ConvertKit_Admin_Bulk_Edit();
68 + $this->classes['admin_cache_plugins'] = new ConvertKit_Admin_Cache_Plugins();
69 + $this->classes['admin_category'] = new ConvertKit_Admin_Category();
70 + $this->classes['admin_notices'] = new ConvertKit_Admin_Notices();
71 + $this->classes['admin_post'] = new ConvertKit_Admin_Post();
72 + $this->classes['admin_quick_edit'] = new ConvertKit_Admin_Quick_Edit();
73 + $this->classes['admin_refresh_resources'] = new ConvertKit_Admin_Refresh_Resources();
74 + $this->classes['admin_restrict_content'] = new ConvertKit_Admin_Restrict_Content();
75 + $this->classes['admin_settings'] = new ConvertKit_Admin_Settings();
76 + $this->classes['admin_setup_wizard_plugin'] = new ConvertKit_Admin_Setup_Wizard_Plugin();
77 + $this->classes['admin_setup_wizard_restrict_content'] = new ConvertKit_Admin_Setup_Wizard_Restrict_Content();
78 + $this->classes['admin_tinymce'] = new ConvertKit_Admin_TinyMCE();
79 + $this->classes['admin_user'] = new ConvertKit_Admin_User();
100 80
101 81 /**
102 82 * Initialize integration classes for the WordPress Administration interface.
103 83 *
@@ -160,11 +140,10 @@
160 140 if ( is_admin() ) {
161 141 return;
162 142 }
163 143
164 - $this->classes['cache_plugins'] = new ConvertKit_Cache_Plugins();
165 - $this->classes['output'] = new ConvertKit_Output();
166 - $this->classes['output_broadcasts'] = new ConvertKit_Output_Broadcasts();
144 + $this->classes['cache_plugins'] = new ConvertKit_Cache_Plugins();
145 + $this->classes['output'] = new ConvertKit_Output();
167 146
168 147 /**
169 148 * Initialize integration classes for the frontend web site.
170 149 *
@@ -181,35 +160,34 @@
181 160 * @since 1.9.6
182 161 */
183 162 private function initialize_global() {
184 163
185 - $this->classes['admin_notices'] = new ConvertKit_Admin_Notices();
186 - $this->classes['admin_tinymce'] = new ConvertKit_Admin_TinyMCE();
187 - $this->classes['admin_refresh_resources'] = new ConvertKit_Admin_Refresh_Resources();
188 - $this->classes['blocks_convertkit_broadcasts'] = new ConvertKit_Block_Broadcasts();
189 - $this->classes['blocks_convertkit_content'] = new ConvertKit_Block_Content();
190 - $this->classes['blocks_convertkit_formtrigger'] = new ConvertKit_Block_Form_Trigger();
191 - $this->classes['blocks_convertkit_form'] = new ConvertKit_Block_Form();
192 - $this->classes['blocks_convertkit_form_builder'] = new ConvertKit_Block_Form_Builder();
193 - $this->classes['blocks_convertkit_form_builder_field_email'] = new ConvertKit_Block_Form_Builder_Field_Email();
194 - $this->classes['blocks_convertkit_form_builder_field_name'] = new ConvertKit_Block_Form_Builder_Field_Name();
195 - $this->classes['blocks_convertkit_form_builder_field_custom'] = new ConvertKit_Block_Form_Builder_Field_Custom();
196 - $this->classes['blocks_convertkit_product'] = new ConvertKit_Block_Product();
197 - $this->classes['block_formatter_form_link'] = new ConvertKit_Block_Formatter_Form_Link();
198 - $this->classes['block_formatter_product_link'] = new ConvertKit_Block_Formatter_Product_Link();
199 - $this->classes['pre_publish_action_broadcast_export'] = new ConvertKit_Pre_Publish_Action_Broadcast_Export();
200 - $this->classes['plugin_sidebar_post_settings'] = new ConvertKit_Plugin_Sidebar_Post_Settings();
201 - $this->classes['broadcasts_exporter'] = new ConvertKit_Broadcasts_Exporter();
202 - $this->classes['broadcasts_importer'] = new ConvertKit_Broadcasts_Importer();
203 - $this->classes['elementor'] = new ConvertKit_Elementor();
204 - $this->classes['gutenberg'] = new ConvertKit_Gutenberg();
205 - $this->classes['media_library'] = new ConvertKit_Media_Library();
206 - $this->classes['output_restrict_content'] = new ConvertKit_Output_Restrict_Content();
207 - $this->classes['review_request'] = new ConvertKit_Review_Request( 'Kit', 'convertkit', CONVERTKIT_PLUGIN_PATH );
208 - $this->classes['preview_output'] = new ConvertKit_Preview_Output();
209 - $this->classes['setup'] = new ConvertKit_Setup();
210 - $this->classes['shortcodes'] = new ConvertKit_Shortcodes();
164 + $this->classes['ajax'] = new ConvertKit_AJAX();
165 + $this->classes['blocks_convertkit_broadcasts'] = new ConvertKit_Block_Broadcasts();
166 + $this->classes['blocks_convertkit_content'] = new ConvertKit_Block_Content();
167 + $this->classes['blocks_convertkit_formtrigger'] = new ConvertKit_Block_Form_Trigger();
168 + $this->classes['blocks_convertkit_form'] = new ConvertKit_Block_Form();
169 + $this->classes['blocks_convertkit_product'] = new ConvertKit_Block_Product();
170 + $this->classes['block_formatter_form_link'] = new ConvertKit_Block_Formatter_Form_Link();
171 + $this->classes['block_formatter_product_link'] = new ConvertKit_Block_Formatter_Product_Link();
172 + $this->classes['pre_publish_action_broadcast_export'] = new ConvertKit_Pre_Publish_Action_Broadcast_Export();
173 + $this->classes['broadcasts_exporter'] = new ConvertKit_Broadcasts_Exporter();
174 + $this->classes['broadcasts_importer'] = new ConvertKit_Broadcasts_Importer();
175 + $this->classes['elementor'] = new ConvertKit_Elementor();
176 + $this->classes['gutenberg'] = new ConvertKit_Gutenberg();
177 + $this->classes['media_library'] = new ConvertKit_Media_Library();
178 + $this->classes['output_restrict_content'] = new ConvertKit_Output_Restrict_Content();
179 + $this->classes['review_request'] = new ConvertKit_Review_Request( 'ConvertKit', 'convertkit', CONVERTKIT_PLUGIN_PATH );
180 + $this->classes['preview_output'] = new ConvertKit_Preview_Output();
181 + $this->classes['setup'] = new ConvertKit_Setup();
182 + $this->classes['shortcodes'] = new ConvertKit_Shortcodes();
183 + $this->classes['widgets'] = new ConvertKit_Widgets();
211 184
185 + // Run the setup's update process on WordPress' init hook.
186 + // Doing this sooner may result in errors with WordPress functions that are not yet
187 + // available to the update routine.
188 + add_action( 'init', array( $this, 'update' ) );
189 +
212 190 /**
213 191 * Initialize integration classes for the frontend web site.
214 192 *
215 193 * @since 1.9.6
@@ -218,17 +196,16 @@
218 196
219 197 }
220 198
221 199 /**
222 - * Runs the Plugin's initialization and update routines, which checks if
200 + * Runs the Plugin's update routine, which checks if
223 201 * the Plugin has just been updated to a newer version,
224 202 * and if so runs any specific processes that might be needed.
225 203 *
226 204 * @since 1.9.7.4
227 205 */
228 - public function setup() {
206 + public function update() {
229 207
230 - $this->get_class( 'setup' )->initialize();
231 208 $this->get_class( 'setup' )->update();
232 209
233 210 }
234 211
@@ -248,15 +225,15 @@
248 225 }
249 226
250 227 // Pro.
251 228 if ( array_key_exists( 'REQUEST_URI', $_SERVER ) ) {
252 - if ( strpos( sanitize_text_field( wp_unslash( $_SERVER['REQUEST_URI'] ) ), '/pro/' ) !== false ) {
229 + if ( strpos( sanitize_text_field( $_SERVER['REQUEST_URI'] ), '/pro/' ) !== false ) {
253 230 return true;
254 231 }
255 - if ( strpos( sanitize_text_field( wp_unslash( $_SERVER['REQUEST_URI'] ) ), '/x/' ) !== false ) {
232 + if ( strpos( sanitize_text_field( $_SERVER['REQUEST_URI'] ), '/x/' ) !== false ) {
256 233 return true;
257 234 }
258 - if ( strpos( sanitize_text_field( wp_unslash( $_SERVER['REQUEST_URI'] ) ), 'cornerstone-endpoint' ) !== false ) {
235 + if ( strpos( sanitize_text_field( $_SERVER['REQUEST_URI'] ), 'cornerstone-endpoint' ) !== false ) {
259 236 return true;
260 237 }
261 238 }
262 239
@@ -288,9 +265,9 @@
288 265 return true;
289 266 }
290 267
291 268 // Elementor.
292 - if ( array_key_exists( 'action', $_REQUEST ) && sanitize_text_field( wp_unslash( $_REQUEST['action'] ) ) === 'elementor' ) {
269 + if ( array_key_exists( 'action', $_REQUEST ) && sanitize_text_field( $_REQUEST['action'] ) === 'elementor' ) {
293 270 return true;
294 271 }
295 272
296 273 // Kallyas.
@@ -318,9 +295,9 @@
318 295 return true;
319 296 }
320 297
321 298 // Zion Builder.
322 - if ( array_key_exists( 'action', $_REQUEST ) && sanitize_text_field( wp_unslash( $_REQUEST['action'] ) ) === 'zion_builder_active' ) {
299 + if ( array_key_exists( 'action', $_REQUEST ) && sanitize_text_field( $_REQUEST['action'] ) === 'zion_builder_active' ) {
323 300 return true;
324 301 }
325 302
326 303 // Assume we're not in the Administration interface.
@@ -372,13 +349,34 @@
372 349 * @return bool Is WP CRON Request
373 350 */
374 351 public function is_cron() {
375 352
376 - return wp_doing_cron();
353 + if ( ! defined( 'DOING_CRON' ) ) {
354 + return false;
355 + }
356 + if ( ! DOING_CRON ) {
357 + return false;
358 + }
377 359
360 + return true;
361 +
378 362 }
379 363
380 364 /**
365 + * Loads the plugin's translated strings, if available.
366 + *
367 + * @since 1.0.0
368 + */
369 + public function load_language_files() {
370 +
371 + // If the .mo file for a given language is available in WP_LANG_DIR/convertkit
372 + // i.e. it's available as a translation at https://translate.wordpress.org/projects/wp-plugins/convertkit/,
373 + // it will be used instead of the .mo file in convertkit/languages.
374 + load_plugin_textdomain( 'convertkit', false, 'convertkit/languages' );
375 +
376 + }
377 +
378 + /**
381 379 * Returns the given class
382 380 *
383 381 * @since 1.9.6
384 382 *
@@ -394,9 +392,9 @@
394 392 $error = new WP_Error(
395 393 'convertkit_get_class',
396 394 sprintf(
397 395 /* translators: %1$s: PHP class name */
398 - __( 'Kit Error: Could not load Plugin class <strong>%1$s</strong>', 'convertkit' ),
396 + __( 'ConvertKit Error: Could not load Plugin class <strong>%1$s</strong>', 'convertkit' ),
399 397 $name
400 398 )
401 399 );
402 400
@@ -404,9 +402,9 @@
404 402 // Admin UI.
405 403 if ( is_admin() ) {
406 404 wp_die(
407 405 esc_attr( $error->get_error_message() ),
408 - esc_html__( 'Kit Error', 'convertkit' ),
406 + esc_html__( 'ConvertKit Error', 'convertkit' ),
409 407 array(
410 408 'back_link' => true,
411 409 )
412 410 );