PluginProbe
Kit (formerly ConvertKit) – Email Newsletter, Email Marketing, Membership, Subscribers and Landing Pages / 3.0.6
Kit (formerly ConvertKit) – Email Newsletter, Email Marketing, Membership, Subscribers and Landing Pages v3.0.6
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 2.3.2 2.3.3 All 194 releases
← All changes | includes/functions.php +181 -36 2.3.33.0.6 View file →
@@ -16,8 +16,9 @@
16 16 function convertkit_plugin_activate( $network_wide ) {
17 17
18 18 // Initialise Plugin.
19 19 $convertkit = WP_ConvertKit();
20 + $convertkit->initialize();
20 21
21 22 // Check if we are on a multisite install, activating network wide, or a single install.
22 23 if ( ! is_multisite() || ! $network_wide ) {
23 24 // Single Site activation.
@@ -57,8 +58,9 @@
57 58 }
58 59
59 60 // Initialise Plugin.
60 61 $convertkit = WP_ConvertKit();
62 + $convertkit->initialize();
61 63
62 64 // Run installation routine.
63 65 switch_to_blog( $site_or_blog_id );
64 66 $convertkit->get_class( 'setup' )->activate();
@@ -76,8 +78,9 @@
76 78 function convertkit_plugin_deactivate( $network_wide ) {
77 79
78 80 // Initialise Plugin.
79 81 $convertkit = WP_ConvertKit();
82 + $convertkit->initialize();
80 83
81 84 // Check if we are on a multisite install, activating network wide, or a single install.
82 85 if ( ! is_multisite() || ! $network_wide ) {
83 86 // Single Site activation.
@@ -106,13 +109,32 @@
106 109 * @return array Post Types
107 110 */
108 111 function convertkit_get_supported_post_types() {
109 112
113 + // Define supported Post Types.
110 114 $post_types = array(
111 115 'page',
112 116 'post',
113 117 );
114 118
119 + // If public Custom Post Types can be fetched, include them now.
120 + if ( function_exists( 'get_post_types' ) ) {
121 + // Get public Custom Post Types.
122 + $custom_post_types = (array) get_post_types(
123 + array(
124 + 'public' => true,
125 +
126 + // Don't include WordPress' built in Post Types, such as attachment, revisino and nav_menu_item.
127 + '_builtin' => false,
128 + )
129 + );
130 +
131 + $post_types = array_merge(
132 + $post_types,
133 + array_keys( $custom_post_types )
134 + );
135 + }
136 +
115 137 /**
116 138 * Defines the Post Types that support ConvertKit Forms.
117 139 *
118 140 * @since 1.9.6
@@ -129,28 +151,16 @@
129 151 * Helper method to get supported Post Types for Restricted Content (Member's Content)
130 152 *
131 153 * @since 2.1.0
132 154 *
155 + * @deprecated 2.4.3 No longer used by internal code and not recommended. Use `convertkit_get_supported_post_types` instead.
156 + *
133 157 * @return array Post Types
134 158 */
135 159 function convertkit_get_supported_restrict_content_post_types() {
136 160
137 - $post_types = array(
138 - 'page',
139 - 'post',
140 - );
161 + return convertkit_get_supported_post_types();
141 162
142 - /**
143 - * Defines the Post Types that support Restricted Content / Members Content functionality.
144 - *
145 - * @since 2.0.0
146 - *
147 - * @param array $post_types Post Types
148 - */
149 - $post_types = apply_filters( 'convertkit_get_supported_restrict_content_post_types', $post_types );
150 -
151 - return $post_types;
152 -
153 163 }
154 164
155 165 /**
156 166 * Helper method to get registered Shortcodes.
@@ -304,9 +314,9 @@
304 314 'utm_source' => 'wordpress',
305 315 'utm_term' => get_locale(),
306 316 'utm_content' => 'convertkit',
307 317 ),
308 - 'https://app.convertkit.com/users/signup'
318 + 'https://app.kit.com/users/signup'
309 319 );
310 320
311 321 }
312 322
@@ -324,9 +334,9 @@
324 334 'utm_source' => 'wordpress',
325 335 'utm_term' => get_locale(),
326 336 'utm_content' => 'convertkit',
327 337 ),
328 - 'https://app.convertkit.com/'
338 + 'https://app.kit.com/'
329 339 );
330 340
331 341 }
332 342
@@ -344,21 +354,21 @@
344 354 'utm_source' => 'wordpress',
345 355 'utm_term' => get_locale(),
346 356 'utm_content' => 'convertkit',
347 357 ),
348 - 'https://app.convertkit.com/account_settings/billing/'
358 + 'https://app.kit.com/account_settings/billing/'
349 359 );
350 360
351 361 }
352 362
353 363 /**
354 - * Helper method to return the URL the user needs to visit on the ConvertKit app to obtain their API Key and Secret.
364 + * Helper method to return the URL the user needs to visit on the ConvertKit app to create a new Form or Landing Page.
355 365 *
356 - * @since 1.9.6.1
366 + * @since 2.2.3
357 367 *
358 - * @return string ConvertKit App URL.
368 + * @return string ConvertKit App URL
359 369 */
360 -function convertkit_get_api_key_url() {
370 +function convertkit_get_new_form_url() {
361 371
362 372 return add_query_arg(
363 373 array(
364 374 'utm_source' => 'wordpress',
@@ -364,21 +374,21 @@
364 374 'utm_source' => 'wordpress',
365 375 'utm_term' => get_locale(),
366 376 'utm_content' => 'convertkit',
367 377 ),
368 - 'https://app.convertkit.com/account_settings/advanced_settings/'
378 + 'https://app.kit.com/forms/new/'
369 379 );
370 380
371 381 }
372 382
373 383 /**
374 - * Helper method to return the URL the user needs to visit on the ConvertKit app to create a new Form or Landing Page.
384 + * Helper method to return the URL the user needs to visit to edit ConvertKit forms.
375 385 *
376 386 * @since 2.2.3
377 387 *
378 - * @return string ConvertKit App URL
388 + * @return string ConvertKit Form Editor URL.
379 389 */
380 -function convertkit_get_new_form_url() {
390 +function convertkit_get_form_editor_url() {
381 391
382 392 return add_query_arg(
383 393 array(
384 394 'utm_source' => 'wordpress',
@@ -384,21 +394,21 @@
384 394 'utm_source' => 'wordpress',
385 395 'utm_term' => get_locale(),
386 396 'utm_content' => 'convertkit',
387 397 ),
388 - 'https://app.convertkit.com/forms/new/'
398 + 'https://app.kit.com/forms'
389 399 );
390 400
391 401 }
392 402
393 403 /**
394 - * Helper method to return the URL the user needs to visit to edit ConvertKit forms.
404 + * Helper method to return the URL the user needs to visit on the ConvertKit app to create a new Landing Page.
395 405 *
396 - * @since 2.2.3
406 + * @since 2.5.5
397 407 *
398 - * @return string ConvertKit Form Editor URL.
408 + * @return string ConvertKit App URL
399 409 */
400 -function convertkit_get_form_editor_url() {
410 +function convertkit_get_new_landing_page_url() {
401 411
402 412 return add_query_arg(
403 413 array(
404 414 'utm_source' => 'wordpress',
@@ -404,9 +414,9 @@
404 414 'utm_source' => 'wordpress',
405 415 'utm_term' => get_locale(),
406 416 'utm_content' => 'convertkit',
407 417 ),
408 - 'https://app.convertkit.com/forms'
418 + 'https://app.kit.com/pages/new/'
409 419 );
410 420
411 421 }
412 422
@@ -424,9 +434,9 @@
424 434 'utm_source' => 'wordpress',
425 435 'utm_term' => get_locale(),
426 436 'utm_content' => 'convertkit',
427 437 ),
428 - 'https://app.convertkit.com/subscribers/'
438 + 'https://app.kit.com/subscribers/'
429 439 );
430 440
431 441 }
432 442
@@ -444,9 +454,9 @@
444 454 'utm_source' => 'wordpress',
445 455 'utm_term' => get_locale(),
446 456 'utm_content' => 'convertkit',
447 457 ),
448 - 'https://app.convertkit.com/campaigns/'
458 + 'https://app.kit.com/campaigns/'
449 459 );
450 460
451 461 }
452 462
@@ -466,9 +476,9 @@
466 476 'utm_term' => get_locale(),
467 477 'utm_content' => 'convertkit',
468 478 ),
469 479 sprintf(
470 - 'https://app.convertkit.com/campaigns/%s/draft',
480 + 'https://app.kit.com/campaigns/%s/draft',
471 481 $broadcast_id
472 482 )
473 483 );
474 484
@@ -488,9 +498,9 @@
488 498 'utm_source' => 'wordpress',
489 499 'utm_term' => get_locale(),
490 500 'utm_content' => 'convertkit',
491 501 ),
492 - 'https://app.convertkit.com/products/new/'
502 + 'https://app.kit.com/products/new/'
493 503 );
494 504
495 505 }
496 506
@@ -542,6 +552,141 @@
542 552 }
543 553
544 554 // Return file's contents.
545 555 return $contents;
556 +
557 +}
558 +
559 +/**
560 + * Returns a dropdown field commonly used for settings, comprising of:
561 + * - Do not subscribe
562 + * - Subscribe
563 + * - Subscribe to Form
564 + *
565 + * @since 2.5.2
566 + *
567 + * @param string $name Field name.
568 + * @param string $value Field value.
569 + * @param string $id Field ID attribute.
570 + * @param string $css_class Field CSS class(es).
571 + * @param string $context Resource context.
572 + * @param bool|array $additional_options Additional <option> key/value pairs.
573 + */
574 +function convertkit_get_subscription_dropdown_field( $name, $value, $id, $css_class = '', $context = '', $additional_options = false ) { // phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter
575 +
576 + // Load resource classes.
577 + $forms = new ConvertKit_Resource_Forms( $context );
578 + $tags = new ConvertKit_Resource_Tags( $context );
579 + $sequences = new ConvertKit_Resource_Sequences( $context );
580 +
581 + ob_start();
582 + include CONVERTKIT_PLUGIN_PATH . '/views/backend/subscription-dropdown-field.php';
583 + $output = trim( ob_get_clean() );
584 +
585 + // Return output.
586 + return $output;
587 +
588 +}
589 +
590 +/**
591 + * Helper method to safely call get_current_screen(), returning false
592 + * if the function is not available or returns null.
593 + *
594 + * Otherwise returns the given WP_Screen property.
595 + *
596 + * @since 2.5.9
597 + *
598 + * @param string $property WP_Screen property to return.
599 + * @return bool|string
600 + */
601 +function convertkit_get_current_screen( $property ) {
602 +
603 + // Bail if we cannot determine the screen.
604 + if ( ! function_exists( 'get_current_screen' ) ) {
605 + return false;
606 + }
607 +
608 + // Get screen.
609 + $screen = get_current_screen();
610 +
611 + // Bail if the screen couldn't be determined.
612 + if ( is_null( $screen ) ) {
613 + return false;
614 + }
615 +
616 + // Return property.
617 + return $screen->$property;
618 +
619 +}
620 +
621 +/**
622 + * Outputs the Intercom help widget script.
623 + *
624 + * @since 2.7.2
625 + */
626 +function convertkit_output_intercom_messenger() {
627 +
628 + ?>
629 + <script>
630 + const KIT_INTERCOM_APP_ID = 'e4n3xtxz';
631 + window.intercomSettings = {
632 + api_base: 'https://api-iam.intercom.io',
633 + app_id: KIT_INTERCOM_APP_ID
634 + };
635 + </script>
636 +
637 + <script>
638 + (function(){var w=window;var ic=w.Intercom;if(typeof ic==="function"){ic('update',w.intercomSettings);}else{var d=document;var i=function(){i.c(arguments);};i.q=[];i.c=function(args){i.q.push(args);};w.Intercom=i;var l=function(){var s=d.createElement('script');s.type='text/javascript';s.async=true;s.src='https://widget.intercom.io/widget/' + KIT_INTERCOM_APP_ID;var x=d.getElementsByTagName('script')[0];x.parentNode.insertBefore(s, x);};if(document.readyState==='complete'){l();}else if(w.attachEvent){w.attachEvent('onload',l);}else{w.addEventListener('load',l,false);}}})();
639 + </script>
640 + <?php
641 +
642 +}
643 +
644 +/**
645 + * Returns permitted HTML output when using wp_kses( ..., convertkit_kses_allowed_html()).
646 + *
647 + * @since 2.8.5
648 + */
649 +function convertkit_kses_allowed_html() {
650 +
651 + // Get WordPress' permitted HTML elements.
652 + $elements = wp_kses_allowed_html( 'post' );
653 +
654 + // Add form elements.
655 + $form_elements = array(
656 + 'input' => array(
657 + 'type' => true,
658 + 'id' => true,
659 + 'name' => true,
660 + 'class' => true,
661 + 'value' => true,
662 + 'checked' => true,
663 + 'min' => true,
664 + 'max' => true,
665 + 'step' => true,
666 + 'data-*' => true,
667 + ),
668 + 'select' => array(
669 + 'id' => true,
670 + 'name' => true,
671 + 'class' => true,
672 + 'size' => true,
673 + 'multiple' => true,
674 + 'data-*' => true,
675 + ),
676 + 'option' => array(
677 + 'value' => true,
678 + 'selected' => true,
679 + 'data-*' => true,
680 + ),
681 + 'optgroup' => array(
682 + 'label' => true,
683 + 'data-*' => true,
684 + ),
685 + 'label' => array(
686 + 'for' => true,
687 + ),
688 + );
689 +
690 + return array_merge( $elements, $form_elements );
546 691
547 692 }