PluginProbe
Kit (formerly ConvertKit) – Email Newsletter, Email Marketing, Membership, Subscribers and Landing Pages / 1.3.8
Kit (formerly ConvertKit) – Email Newsletter, Email Marketing, Membership, Subscribers and Landing Pages v1.3.8
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 2.3.2 All 195 releases
← All changes | wp-convertkit.php +222 -217 3.4.21.3.8 View file →
@@ -1,238 +1,243 @@
1 1 <?php
2 -/**
3 - * Kit (formerly ConvertKit) WordPress Plugin.
4 - *
5 - * @package ConvertKit
6 - * @author ConvertKit
7 - *
8 - * @wordpress-plugin
9 - * Plugin Name: Kit (formerly ConvertKit)
10 - * Plugin URI: https://kit.com/
11 - * Description: Display Kit (formerly ConvertKit) email subscription forms, landing pages, products, broadcasts and more.
12 - * Version: 3.4.2
13 - * Author: Kit
14 - * Author URI: https://kit.com/
15 - * Text Domain: convertkit
16 - * License: GPLv3 or later
17 - * License URI: https://www.gnu.org/licenses/gpl-3.0.html
2 +/*
3 + Plugin Name: WP ConvertKit
4 + Plugin URI: http://convertkit.com/
5 + Description: Quickly and easily integrate ConvertKit forms into your site.
6 + Version: 1.3.8
7 + Author: ConvertKit
8 + Author URI: http://convertkit.com/
18 9 */
19 10
20 -// Bail if Kit is already loaded.
21 -if ( class_exists( 'WP_ConvertKit' ) ) {
22 - return;
23 -}
11 +require_once plugin_dir_path( __FILE__ ) . "/lib/convertkit-api.php";
12 +require_once plugin_dir_path( __FILE__ ) . "/lib/integration/wishlist_member.php";
24 13
25 -// Define Kit Plugin paths and version number.
26 -define( 'CONVERTKIT_PLUGIN_NAME', 'ConvertKit' ); // Used for user-agent in API class.
27 -define( 'CONVERTKIT_PLUGIN_FILE', plugin_basename( __FILE__ ) );
28 -define( 'CONVERTKIT_PLUGIN_URL', plugin_dir_url( __FILE__ ) );
29 -define( 'CONVERTKIT_PLUGIN_PATH', __DIR__ );
30 -define( 'CONVERTKIT_PLUGIN_VERSION', '3.4.2' );
31 -define( 'CONVERTKIT_OAUTH_CLIENT_ID', 'HXZlOCj-K5r0ufuWCtyoyo3f688VmMAYSsKg1eGvw0Y' );
32 -define( 'CONVERTKIT_OAUTH_CLIENT_REDIRECT_URI', 'https://app.kit.com/wordpress/redirect' );
33 -define( 'CONVERTKIT_MCP_APP_NAME', 'Kit WordPress Plugin: MCP Server' );
14 +if(!class_exists('WP_ConvertKit')) {
15 + class WP_ConvertKit {
34 16
35 -// Load shared classes, if they have not been included by another Kit Plugin.
36 -if ( ! trait_exists( 'ConvertKit_API_Traits' ) && ! trait_exists( 'ConvertKit_API\ConvertKit_API_Traits' ) ) {
37 - require_once CONVERTKIT_PLUGIN_PATH . '/vendor/convertkit/convertkit-wordpress-libraries/src/class-convertkit-api-traits.php';
38 -}
39 -if ( ! class_exists( 'ConvertKit_API_V4' ) ) {
40 - require_once CONVERTKIT_PLUGIN_PATH . '/vendor/convertkit/convertkit-wordpress-libraries/src/class-convertkit-api-v4.php';
41 -}
42 -if ( ! class_exists( 'ConvertKit_Log' ) ) {
43 - require_once CONVERTKIT_PLUGIN_PATH . '/vendor/convertkit/convertkit-wordpress-libraries/src/class-convertkit-log.php';
44 -}
45 -if ( ! class_exists( 'ConvertKit_Resource_V4' ) ) {
46 - require_once CONVERTKIT_PLUGIN_PATH . '/vendor/convertkit/convertkit-wordpress-libraries/src/class-convertkit-resource-v4.php';
47 -}
48 -if ( ! class_exists( 'ConvertKit_Review_Request' ) ) {
49 - require_once CONVERTKIT_PLUGIN_PATH . '/vendor/convertkit/convertkit-wordpress-libraries/src/class-convertkit-review-request.php';
50 -}
17 + // Plugin Version
18 + const VERSION = '1.3.8';
51 19
52 -// Load plugin files that are always required.
53 -require_once CONVERTKIT_PLUGIN_PATH . '/includes/cron-functions.php';
54 -require_once CONVERTKIT_PLUGIN_PATH . '/includes/functions.php';
55 -require_once CONVERTKIT_PLUGIN_PATH . '/includes/class-wp-convertkit.php';
56 -require_once CONVERTKIT_PLUGIN_PATH . '/includes/class-convertkit-admin-notices.php';
57 -require_once CONVERTKIT_PLUGIN_PATH . '/includes/class-convertkit-broadcasts-exporter.php';
58 -require_once CONVERTKIT_PLUGIN_PATH . '/includes/class-convertkit-broadcasts-importer.php';
59 -require_once CONVERTKIT_PLUGIN_PATH . '/includes/class-convertkit-cache-plugins.php';
60 -require_once CONVERTKIT_PLUGIN_PATH . '/includes/class-convertkit-cron.php';
61 -require_once CONVERTKIT_PLUGIN_PATH . '/includes/class-convertkit-form-entries.php';
62 -require_once CONVERTKIT_PLUGIN_PATH . '/includes/class-convertkit-gutenberg.php';
63 -require_once CONVERTKIT_PLUGIN_PATH . '/includes/class-convertkit-html-parser.php';
64 -require_once CONVERTKIT_PLUGIN_PATH . '/includes/class-convertkit-media-library.php';
65 -require_once CONVERTKIT_PLUGIN_PATH . '/includes/class-convertkit-output.php';
66 -require_once CONVERTKIT_PLUGIN_PATH . '/includes/class-convertkit-output-broadcasts.php';
67 -require_once CONVERTKIT_PLUGIN_PATH . '/includes/class-convertkit-output-restrict-content.php';
68 -require_once CONVERTKIT_PLUGIN_PATH . '/includes/class-convertkit-post.php';
69 -require_once CONVERTKIT_PLUGIN_PATH . '/includes/class-convertkit-preview-output.php';
70 -require_once CONVERTKIT_PLUGIN_PATH . '/includes/class-convertkit-cloudflare-turnstile.php';
71 -require_once CONVERTKIT_PLUGIN_PATH . '/includes/class-convertkit-recaptcha.php';
72 -require_once CONVERTKIT_PLUGIN_PATH . '/includes/class-convertkit-spam-protection.php';
73 -require_once CONVERTKIT_PLUGIN_PATH . '/includes/class-convertkit-resource-account.php';
74 -require_once CONVERTKIT_PLUGIN_PATH . '/includes/class-convertkit-resource-creator-network-recommendations.php';
75 -require_once CONVERTKIT_PLUGIN_PATH . '/includes/class-convertkit-restrict-content-cache.php';
76 -require_once CONVERTKIT_PLUGIN_PATH . '/includes/class-convertkit-resource-custom-fields.php';
77 -require_once CONVERTKIT_PLUGIN_PATH . '/includes/class-convertkit-resource-forms.php';
78 -require_once CONVERTKIT_PLUGIN_PATH . '/includes/class-convertkit-resource-landing-pages.php';
79 -require_once CONVERTKIT_PLUGIN_PATH . '/includes/class-convertkit-resource-posts.php';
80 -require_once CONVERTKIT_PLUGIN_PATH . '/includes/class-convertkit-resource-products.php';
81 -require_once CONVERTKIT_PLUGIN_PATH . '/includes/class-convertkit-resource-sequences.php';
82 -require_once CONVERTKIT_PLUGIN_PATH . '/includes/class-convertkit-resource-tags.php';
83 -require_once CONVERTKIT_PLUGIN_PATH . '/includes/class-convertkit-settings.php';
84 -require_once CONVERTKIT_PLUGIN_PATH . '/includes/class-convertkit-settings-broadcasts.php';
85 -require_once CONVERTKIT_PLUGIN_PATH . '/includes/class-convertkit-settings-mcp.php';
86 -require_once CONVERTKIT_PLUGIN_PATH . '/includes/class-convertkit-settings-restrict-content.php';
87 -require_once CONVERTKIT_PLUGIN_PATH . '/includes/class-convertkit-setup.php';
88 -require_once CONVERTKIT_PLUGIN_PATH . '/includes/class-convertkit-shortcodes.php';
89 -require_once CONVERTKIT_PLUGIN_PATH . '/includes/class-convertkit-subscriber.php';
90 -require_once CONVERTKIT_PLUGIN_PATH . '/includes/class-convertkit-term.php';
91 -require_once CONVERTKIT_PLUGIN_PATH . '/includes/class-convertkit-user.php';
92 -require_once CONVERTKIT_PLUGIN_PATH . '/includes/class-convertkit-widgets.php';
93 -require_once CONVERTKIT_PLUGIN_PATH . '/includes/blocks/class-convertkit-block.php';
94 -require_once CONVERTKIT_PLUGIN_PATH . '/includes/blocks/class-convertkit-block-broadcasts.php';
95 -require_once CONVERTKIT_PLUGIN_PATH . '/includes/blocks/class-convertkit-block-content.php';
96 -require_once CONVERTKIT_PLUGIN_PATH . '/includes/blocks/class-convertkit-block-form-trigger.php';
97 -require_once CONVERTKIT_PLUGIN_PATH . '/includes/blocks/class-convertkit-block-form.php';
98 -require_once CONVERTKIT_PLUGIN_PATH . '/includes/blocks/class-convertkit-block-form-builder.php';
99 -require_once CONVERTKIT_PLUGIN_PATH . '/includes/blocks/class-convertkit-block-form-builder-field.php';
100 -require_once CONVERTKIT_PLUGIN_PATH . '/includes/blocks/class-convertkit-block-form-builder-field-email.php';
101 -require_once CONVERTKIT_PLUGIN_PATH . '/includes/blocks/class-convertkit-block-form-builder-field-name.php';
102 -require_once CONVERTKIT_PLUGIN_PATH . '/includes/blocks/class-convertkit-block-form-builder-field-custom.php';
103 -require_once CONVERTKIT_PLUGIN_PATH . '/includes/blocks/class-convertkit-block-product.php';
104 -require_once CONVERTKIT_PLUGIN_PATH . '/includes/blocks/helpers/class-convertkit-block-post-helper.php';
105 -require_once CONVERTKIT_PLUGIN_PATH . '/includes/blocks/helpers/class-convertkit-content-post-helper.php';
106 -require_once CONVERTKIT_PLUGIN_PATH . '/includes/blocks/helpers/class-convertkit-shortcode-post-helper.php';
107 -require_once CONVERTKIT_PLUGIN_PATH . '/includes/block-formatters/class-convertkit-block-formatter.php';
108 -require_once CONVERTKIT_PLUGIN_PATH . '/includes/block-formatters/class-convertkit-block-formatter-form-link.php';
109 -require_once CONVERTKIT_PLUGIN_PATH . '/includes/block-formatters/class-convertkit-block-formatter-product-link.php';
110 -require_once CONVERTKIT_PLUGIN_PATH . '/includes/mcp/class-convertkit-mcp-ability.php';
111 -require_once CONVERTKIT_PLUGIN_PATH . '/includes/mcp/class-convertkit-mcp-resource.php';
112 -require_once CONVERTKIT_PLUGIN_PATH . '/includes/mcp/class-convertkit-mcp-prompt.php';
113 -require_once CONVERTKIT_PLUGIN_PATH . '/includes/mcp/resources/class-convertkit-mcp-resource-list.php';
114 -require_once CONVERTKIT_PLUGIN_PATH . '/includes/mcp/resources/class-convertkit-mcp-resource-reference.php';
115 -require_once CONVERTKIT_PLUGIN_PATH . '/includes/mcp/resources/class-convertkit-mcp-resource-forms.php';
116 -require_once CONVERTKIT_PLUGIN_PATH . '/includes/mcp/resources/class-convertkit-mcp-resource-tags.php';
117 -require_once CONVERTKIT_PLUGIN_PATH . '/includes/mcp/resources/class-convertkit-mcp-resource-landing-pages.php';
118 -require_once CONVERTKIT_PLUGIN_PATH . '/includes/mcp/resources/class-convertkit-mcp-resource-products.php';
119 -require_once CONVERTKIT_PLUGIN_PATH . '/includes/mcp/resources/class-convertkit-mcp-resource-account.php';
120 -require_once CONVERTKIT_PLUGIN_PATH . '/includes/mcp/resources/class-convertkit-mcp-resource-settings.php';
121 -require_once CONVERTKIT_PLUGIN_PATH . '/includes/mcp/resources/class-convertkit-mcp-resource-overview.php';
122 -require_once CONVERTKIT_PLUGIN_PATH . '/includes/mcp/resources/class-convertkit-mcp-resource-forms-reference.php';
123 -require_once CONVERTKIT_PLUGIN_PATH . '/includes/mcp/resources/class-convertkit-mcp-resource-restrict-content-reference.php';
124 -require_once CONVERTKIT_PLUGIN_PATH . '/includes/mcp/resources/class-convertkit-mcp-resource-settings-reference.php';
125 -require_once CONVERTKIT_PLUGIN_PATH . '/includes/mcp/prompts/class-convertkit-mcp-prompt-setup.php';
126 -require_once CONVERTKIT_PLUGIN_PATH . '/includes/mcp/prompts/class-convertkit-mcp-prompt-add-form.php';
127 -require_once CONVERTKIT_PLUGIN_PATH . '/includes/mcp/prompts/class-convertkit-mcp-prompt-restrict-content.php';
128 -require_once CONVERTKIT_PLUGIN_PATH . '/includes/mcp/prompts/class-convertkit-mcp-prompt-configure-broadcasts-import.php';
129 -require_once CONVERTKIT_PLUGIN_PATH . '/includes/mcp/prompts/class-convertkit-mcp-prompt-audit.php';
130 -require_once CONVERTKIT_PLUGIN_PATH . '/includes/mcp/class-convertkit-mcp.php';
131 -require_once CONVERTKIT_PLUGIN_PATH . '/includes/mcp/abilities/content/class-convertkit-mcp-ability-content.php';
132 -require_once CONVERTKIT_PLUGIN_PATH . '/includes/mcp/abilities/content/class-convertkit-mcp-ability-content-list.php';
133 -require_once CONVERTKIT_PLUGIN_PATH . '/includes/mcp/abilities/content/class-convertkit-mcp-ability-content-insert.php';
134 -require_once CONVERTKIT_PLUGIN_PATH . '/includes/mcp/abilities/content/class-convertkit-mcp-ability-content-update.php';
135 -require_once CONVERTKIT_PLUGIN_PATH . '/includes/mcp/abilities/content/class-convertkit-mcp-ability-content-delete.php';
136 -require_once CONVERTKIT_PLUGIN_PATH . '/includes/mcp/abilities/resources/class-convertkit-mcp-ability-resource.php';
137 -require_once CONVERTKIT_PLUGIN_PATH . '/includes/mcp/abilities/resources/class-convertkit-mcp-ability-resource-forms.php';
138 -require_once CONVERTKIT_PLUGIN_PATH . '/includes/mcp/abilities/resources/class-convertkit-mcp-ability-resource-tags.php';
139 -require_once CONVERTKIT_PLUGIN_PATH . '/includes/mcp/abilities/resources/class-convertkit-mcp-ability-resource-landing-pages.php';
140 -require_once CONVERTKIT_PLUGIN_PATH . '/includes/mcp/abilities/resources/class-convertkit-mcp-ability-resource-products.php';
141 -require_once CONVERTKIT_PLUGIN_PATH . '/includes/mcp/abilities/settings/class-convertkit-mcp-ability-settings.php';
142 -require_once CONVERTKIT_PLUGIN_PATH . '/includes/mcp/abilities/settings/class-convertkit-mcp-ability-settings-get.php';
143 -require_once CONVERTKIT_PLUGIN_PATH . '/includes/mcp/abilities/settings/class-convertkit-mcp-ability-settings-update.php';
144 -require_once CONVERTKIT_PLUGIN_PATH . '/includes/mcp/abilities/post-settings/class-convertkit-mcp-ability-post-settings.php';
145 -require_once CONVERTKIT_PLUGIN_PATH . '/includes/mcp/abilities/post-settings/class-convertkit-mcp-ability-post-settings-get.php';
146 -require_once CONVERTKIT_PLUGIN_PATH . '/includes/mcp/abilities/post-settings/class-convertkit-mcp-ability-post-settings-update.php';
147 -require_once CONVERTKIT_PLUGIN_PATH . '/includes/mcp/abilities/category-settings/class-convertkit-mcp-ability-category-settings.php';
148 -require_once CONVERTKIT_PLUGIN_PATH . '/includes/mcp/abilities/category-settings/class-convertkit-mcp-ability-category-settings-get.php';
149 -require_once CONVERTKIT_PLUGIN_PATH . '/includes/mcp/abilities/category-settings/class-convertkit-mcp-ability-category-settings-update.php';
150 -require_once CONVERTKIT_PLUGIN_PATH . '/includes/plugin-sidebars/class-convertkit-plugin-sidebar.php';
151 -require_once CONVERTKIT_PLUGIN_PATH . '/includes/plugin-sidebars/class-convertkit-plugin-sidebar-post-settings.php';
152 -require_once CONVERTKIT_PLUGIN_PATH . '/includes/pre-publish-actions/class-convertkit-pre-publish-action.php';
153 -require_once CONVERTKIT_PLUGIN_PATH . '/includes/pre-publish-actions/class-convertkit-pre-publish-action-broadcast-export.php';
154 -require_once CONVERTKIT_PLUGIN_PATH . '/includes/widgets/class-ck-widget-form.php';
20 + // DB Keys
21 + const POST_META_KEY = '_wp_convertkit_post_meta';
22 + const SETTINGS_NAME = '_wp_convertkit_settings';
155 23
156 -// Admin classes.
157 -require_once CONVERTKIT_PLUGIN_PATH . '/admin/class-convertkit-admin-bulk-edit.php';
158 -require_once CONVERTKIT_PLUGIN_PATH . '/admin/class-convertkit-admin-quick-edit.php';
159 -require_once CONVERTKIT_PLUGIN_PATH . '/admin/class-convertkit-admin-cache-plugins.php';
160 -require_once CONVERTKIT_PLUGIN_PATH . '/admin/class-convertkit-admin-category.php';
161 -require_once CONVERTKIT_PLUGIN_PATH . '/admin/class-convertkit-admin-landing-page.php';
162 -require_once CONVERTKIT_PLUGIN_PATH . '/admin/class-convertkit-admin-legacy-resource-notice.php';
163 -require_once CONVERTKIT_PLUGIN_PATH . '/admin/class-convertkit-admin-post.php';
164 -require_once CONVERTKIT_PLUGIN_PATH . '/admin/class-convertkit-admin-refresh-resources.php';
165 -require_once CONVERTKIT_PLUGIN_PATH . '/admin/class-convertkit-admin-restrict-content.php';
166 -require_once CONVERTKIT_PLUGIN_PATH . '/admin/class-convertkit-admin-settings.php';
167 -require_once CONVERTKIT_PLUGIN_PATH . '/admin/class-convertkit-admin-tinymce.php';
168 -require_once CONVERTKIT_PLUGIN_PATH . '/admin/class-convertkit-admin-setup-wizard.php';
169 -require_once CONVERTKIT_PLUGIN_PATH . '/admin/class-convertkit-wp-list-table.php';
170 -require_once CONVERTKIT_PLUGIN_PATH . '/admin/importers/class-convertkit-admin-importer.php';
171 -require_once CONVERTKIT_PLUGIN_PATH . '/admin/importers/class-convertkit-admin-importer-activecampaign.php';
172 -require_once CONVERTKIT_PLUGIN_PATH . '/admin/importers/class-convertkit-admin-importer-aweber.php';
173 -require_once CONVERTKIT_PLUGIN_PATH . '/admin/importers/class-convertkit-admin-importer-campaignmonitor.php';
174 -require_once CONVERTKIT_PLUGIN_PATH . '/admin/importers/class-convertkit-admin-importer-convertkit-legacy-forms.php';
175 -require_once CONVERTKIT_PLUGIN_PATH . '/admin/importers/class-convertkit-admin-importer-mc4wp.php';
176 -require_once CONVERTKIT_PLUGIN_PATH . '/admin/importers/class-convertkit-admin-importer-mailpoet.php';
177 -require_once CONVERTKIT_PLUGIN_PATH . '/admin/importers/class-convertkit-admin-importer-newsletter.php';
178 -require_once CONVERTKIT_PLUGIN_PATH . '/admin/section/class-convertkit-admin-section-base.php';
179 -require_once CONVERTKIT_PLUGIN_PATH . '/admin/section/class-convertkit-admin-section-broadcasts.php';
180 -require_once CONVERTKIT_PLUGIN_PATH . '/admin/section/class-convertkit-admin-section-form-entries.php';
181 -require_once CONVERTKIT_PLUGIN_PATH . '/admin/section/class-convertkit-admin-section-general.php';
182 -require_once CONVERTKIT_PLUGIN_PATH . '/admin/section/class-convertkit-admin-section-mcp.php';
183 -require_once CONVERTKIT_PLUGIN_PATH . '/admin/section/class-convertkit-admin-section-oauth.php';
184 -require_once CONVERTKIT_PLUGIN_PATH . '/admin/section/class-convertkit-admin-section-restrict-content.php';
185 -require_once CONVERTKIT_PLUGIN_PATH . '/admin/section/class-convertkit-admin-section-tools.php';
186 -require_once CONVERTKIT_PLUGIN_PATH . '/admin/setup-wizard/class-convertkit-admin-setup-wizard-plugin.php';
187 -require_once CONVERTKIT_PLUGIN_PATH . '/admin/setup-wizard/class-convertkit-admin-setup-wizard-landing-page.php';
188 -require_once CONVERTKIT_PLUGIN_PATH . '/admin/setup-wizard/class-convertkit-admin-setup-wizard-restrict-content.php';
24 + // Page Slugs
25 + const SETTINGS_PAGE_SLUG = '_wp_convertkit_settings';
189 26
190 -// Contact Form 7 Integration.
191 -require_once CONVERTKIT_PLUGIN_PATH . '/includes/integrations/contactform7/class-convertkit-contactform7-admin-section.php';
192 -require_once CONVERTKIT_PLUGIN_PATH . '/includes/integrations/contactform7/class-convertkit-contactform7.php';
193 -require_once CONVERTKIT_PLUGIN_PATH . '/includes/integrations/contactform7/class-convertkit-contactform7-settings.php';
27 + private static $api;
194 28
195 -// Divi Integration.
196 -require_once CONVERTKIT_PLUGIN_PATH . '/includes/integrations/divi/class-convertkit-divi.php';
29 + // Data Caching
30 + private static $cache_period = 0;
31 + private static $meta_defaults = null;
32 + private static $settings_defaults = array(
33 + 'api_key' => '',
34 + 'default_form' => 0,
35 + );
197 36
198 -// Elementor Integration.
199 -require_once CONVERTKIT_PLUGIN_PATH . '/includes/integrations/elementor/class-convertkit-elementor.php';
37 + private static $forms_markup = array();
38 + private static $landing_pages_markup = array();
200 39
201 -// Forminator Integration.
202 -require_once CONVERTKIT_PLUGIN_PATH . '/includes/integrations/forminator/class-convertkit-forminator-admin-section.php';
203 -require_once CONVERTKIT_PLUGIN_PATH . '/includes/integrations/forminator/class-convertkit-forminator.php';
204 -require_once CONVERTKIT_PLUGIN_PATH . '/includes/integrations/forminator/class-convertkit-forminator-settings.php';
40 + public static function init() {
41 + self::add_actions();
42 + self::add_filters();
43 + self::register_shortcodes();
205 44
206 -// Impeka Integration.
207 -require_once CONVERTKIT_PLUGIN_PATH . '/includes/integrations/class-convertkit-impeka.php';
45 + self::$cache_period = MINUTE_IN_SECONDS * 10;
208 46
209 -// Uncode Integration.
210 -require_once CONVERTKIT_PLUGIN_PATH . '/includes/integrations/class-convertkit-uncode.php';
47 + self::_api_connect();
48 + }
211 49
212 -// WishList Member Integration.
213 -require_once CONVERTKIT_PLUGIN_PATH . '/includes/integrations/wishlist/class-convertkit-wishlist-admin-section.php';
214 -require_once CONVERTKIT_PLUGIN_PATH . '/includes/integrations/wishlist/class-convertkit-wishlist.php';
215 -require_once CONVERTKIT_PLUGIN_PATH . '/includes/integrations/wishlist/class-convertkit-wishlist-settings.php';
50 + private static function add_actions() {
51 + if(is_admin()) {
52 + add_action('add_meta_boxes_page', array(__CLASS__, 'add_meta_boxes'));
53 + add_action('add_meta_boxes_post', array(__CLASS__, 'add_meta_boxes'));
54 + } else {
55 + add_action('template_redirect', array(__CLASS__, 'page_takeover'));
56 + }
216 57
217 -// WooCommerce Integration.
218 -require_once CONVERTKIT_PLUGIN_PATH . '/includes/integrations/woocommerce/class-convertkit-woocommerce-product-form.php';
58 + add_action('save_post', array(__CLASS__, 'save_post_meta'), 10, 2);
59 + }
219 60
220 -// Register Plugin activation and deactivation functions.
221 -register_activation_hook( __FILE__, 'convertkit_plugin_activate' );
222 -add_action( 'wp_insert_site', 'convertkit_plugin_activate_new_site' );
223 -add_action( 'activate_blog', 'convertkit_plugin_activate_new_site' );
224 -register_deactivation_hook( __FILE__, 'convertkit_plugin_deactivate' );
61 + private static function add_filters() {
62 + if(!is_admin()) {
63 + add_filter('the_content', array(__CLASS__, 'append_form'));
64 + }
225 65
226 -/**
227 - * Main function to return Plugin instance.
228 - *
229 - * @since 1.9.6
230 - */
231 -function WP_ConvertKit() { // phpcs:ignore WordPress.NamingConventions.ValidFunctionName
66 + add_filter('plugin_action_links_' . plugin_basename(__FILE__), array(__CLASS__, 'add_settings_page_link'));
67 + }
232 68
233 - return WP_ConvertKit::get_instance();
69 + private static function register_shortcodes() {
70 + add_shortcode('convertkit', array(__CLASS__, 'shortcode'));
71 + }
234 72
73 + // Callbacks
74 +
75 + /// Settings Related
76 +
77 + public static function add_settings_page_link($links) {
78 + $settings_link = sprintf('<a href="%s">%s</a>', self::_get_settings_page_link(), __('Settings'));
79 +
80 + return array('settings' => $settings_link) + $links;
81 + }
82 +
83 + /// Page / Post Editing
84 +
85 + public static function add_meta_boxes($post) {
86 + $forms = self::$api->get_resources('forms');
87 + $landing_pages = self::$api->get_resources('landing_pages');
88 +
89 + if(!empty($forms) || ('page' === $post->post_type && !empty($landing_pages))) {
90 + add_meta_box('wp-convertkit-meta-box', __('ConvertKit'), array(__CLASS__, 'display_meta_box'), $post->post_type, 'normal');
91 + }
92 + }
93 +
94 + public static function display_meta_box($post) {
95 + $forms = self::$api->get_resources('forms');
96 + $landing_pages = self::$api->get_resources('landing_pages');
97 +
98 + $meta = self::_get_meta($post->ID);
99 + $settings_link = self::_get_settings_page_link();
100 +
101 + include('views/backend/meta-boxes/meta-box.php');
102 + }
103 +
104 + public static function save_post_meta($post_id, $post) {
105 + $data = stripslashes_deep($_POST);
106 + if(wp_is_post_autosave($post_id) || wp_is_post_revision($post_id) || !isset($data['wp-convertkit-save-meta-nonce']) || !wp_verify_nonce($data['wp-convertkit-save-meta-nonce'], 'wp-convertkit-save-meta')) {
107 + return;
108 + }
109 +
110 + self::_set_meta($post_id, $data['wp-convertkit']);
111 + }
112 +
113 + /// Page / Post Display
114 +
115 + public static function append_form($content) {
116 + if(is_singular(array('post')) || is_page()) {
117 + $content .= wp_convertkit_get_form_embed(self::_get_meta(get_the_ID()));
118 + }
119 +
120 + return $content;
121 + }
122 +
123 + public static function page_takeover() {
124 + $queried_object = get_queried_object();
125 + if(isset($queried_object->post_type) && 'page' === $queried_object->post_type && ($landing_page_url = self::_get_meta($queried_object->ID, 'landing_page'))) {
126 + $landing_page = self::$api->get_resource($landing_page_url);
127 +
128 + if(!empty($landing_page)) {
129 + echo $landing_page;
130 + exit;
131 + }
132 + }
133 +
134 + }
135 +
136 + /// Shortcodes
137 +
138 + public static function shortcode($attributes, $content = null) {
139 + return wp_convertkit_get_form_embed($attributes);
140 + }
141 +
142 + // Data Retrieval
143 +
144 + /// Page / Post Meta Data
145 +
146 + private static function _get_meta_defaults() {
147 + if(is_null(self::$meta_defaults)) {
148 + self::$meta_defaults = array(
149 + 'form' => -1,
150 + 'landing_page' => '',
151 + );
152 + }
153 +
154 + return self::$meta_defaults;
155 + }
156 +
157 + private static function _get_meta($post_id, $meta_key = null) {
158 + $post_id = empty($post_id) ? get_the_ID() : $post_id;
159 +
160 + $meta = get_post_meta($post_id, self::POST_META_KEY, true);
161 + $meta_defaults = self::_get_meta_defaults();
162 +
163 + if(empty($meta)) {
164 + $meta = $meta_defaults;
165 +
166 + $old_value = intval(get_post_meta($post_id, '_convertkit_convertkit_form', true));
167 + if(0 !== $old_value) {
168 + $meta['form'] = $old_value;
169 + }
170 + }
171 +
172 + $meta = shortcode_atts($meta_defaults, $meta);
173 +
174 + return is_null($meta_key) ? $meta : (isset($meta[$meta_key]) ? $meta[$meta_key] : false);
175 + }
176 +
177 + private static function _set_meta($post_id, $meta) {
178 + $post_id = empty($post_id) ? get_the_ID() : $post_id;
179 +
180 + update_post_meta($post_id, self::POST_META_KEY, $meta);
181 +
182 + return $meta;
183 + }
184 +
185 + /// Settings
186 +
187 + private static function _get_settings($settings_key = null) {
188 + $settings = get_option(self::SETTINGS_NAME, self::$settings_defaults);
189 +
190 + return is_null($settings_key) ? $settings : (isset($settings[$settings_key]) ? $settings[$settings_key] : null);
191 + }
192 +
193 + /// API
194 +
195 + private static function _api_connect() {
196 + $api_key = self::_get_settings('api_key');
197 +
198 + self::$api = new ConvertKitAPI($api_key);
199 + }
200 +
201 + // Links
202 +
203 + private static function _get_settings_page_link($query_args = array()) {
204 + $query_args = array('page' => self::SETTINGS_PAGE_SLUG) + $query_args;
205 +
206 + return add_query_arg($query_args, admin_url('options-general.php'));
207 + }
208 +
209 + // Template Tags
210 +
211 + public static function get_form_embed($attributes) {
212 + $attributes = shortcode_atts(array(
213 + 'form' => -1,
214 + ), $attributes);
215 +
216 + extract($attributes);
217 +
218 + $form_id = intval(($form < 0) ? self::_get_settings('default_form') : $form);
219 + $form = false;
220 +
221 + if ($form_id == 0) {
222 + return "";
223 + }
224 +
225 + $forms_available = self::$api->get_resources('forms');
226 + foreach($forms_available as $form_available) {
227 + if($form_available['id'] == $form_id) {
228 + $form = $form_available;
229 + break;
230 + }
231 + }
232 +
233 + $form_markup = self::$api->get_resource($form['embed']);
234 +
235 + return $form_markup;
236 + }
237 + }
238 +
239 + require_once('lib/template-tags.php');
240 + WP_ConvertKit::init();
235 241 }
236 242
237 -// Finally, initialize the Plugin.
238 -WP_ConvertKit();
243 +include 'admin/settings.php';