| @@ -63,8 +63,9 @@ | ||
| 63 | 63 | $this->initialize_admin_or_frontend_editor(); |
| 64 | 64 | $this->initialize_cli_cron(); |
| 65 | 65 | $this->initialize_frontend(); |
| 66 | 66 | $this->initialize_global(); |
| 67 | + $this->initialize_mcp(); | |
| 67 | 68 | |
| 68 | 69 | } |
| 69 | 70 | |
| 70 | 71 | /** |
| @@ -78,25 +79,27 @@ | ||
| 78 | 79 | if ( ! is_admin() ) { |
| 79 | 80 | return; |
| 80 | 81 | } |
| 81 | 82 | |
| 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_mc4wp'] = new ConvertKit_Admin_Importer_MC4WP(); | |
| 90 | - $this->classes['admin_importer_mailpoet'] = new ConvertKit_Admin_Importer_Mailpoet(); | |
| 91 | - $this->classes['admin_importer_newsletter'] = new ConvertKit_Admin_Importer_Newsletter(); | |
| 92 | - $this->classes['admin_post'] = new ConvertKit_Admin_Post(); | |
| 93 | - $this->classes['admin_quick_edit'] = new ConvertKit_Admin_Quick_Edit(); | |
| 94 | - $this->classes['admin_restrict_content'] = new ConvertKit_Admin_Restrict_Content(); | |
| 95 | - $this->classes['admin_settings'] = new ConvertKit_Admin_Settings(); | |
| 96 | - $this->classes['admin_setup_wizard_landing_page'] = new ConvertKit_Admin_Setup_Wizard_Landing_Page(); | |
| 97 | - $this->classes['admin_setup_wizard_plugin'] = new ConvertKit_Admin_Setup_Wizard_Plugin(); | |
| 98 | - $this->classes['admin_setup_wizard_restrict_content'] = new ConvertKit_Admin_Setup_Wizard_Restrict_Content(); | |
| 83 | + $this->classes['admin_bulk_edit'] = new ConvertKit_Admin_Bulk_Edit(); | |
| 84 | + $this->classes['admin_cache_plugins'] = new ConvertKit_Admin_Cache_Plugins(); | |
| 85 | + $this->classes['admin_category'] = new ConvertKit_Admin_Category(); | |
| 86 | + $this->classes['admin_landing_page'] = new ConvertKit_Admin_Landing_Page(); | |
| 87 | + $this->classes['admin_legacy_resource_notice'] = new ConvertKit_Admin_Legacy_Resource_Notice(); | |
| 88 | + $this->classes['admin_importer_activecampaign'] = new ConvertKit_Admin_Importer_ActiveCampaign(); | |
| 89 | + $this->classes['admin_importer_aweber'] = new ConvertKit_Admin_Importer_AWeber(); | |
| 90 | + $this->classes['admin_importer_campaignmonitor'] = new ConvertKit_Admin_Importer_CampaignMonitor(); | |
| 91 | + $this->classes['admin_importer_convertkit_legacy_forms'] = new ConvertKit_Admin_Importer_ConvertKit_Legacy_Forms(); | |
| 92 | + $this->classes['admin_importer_mc4wp'] = new ConvertKit_Admin_Importer_MC4WP(); | |
| 93 | + $this->classes['admin_importer_mailpoet'] = new ConvertKit_Admin_Importer_Mailpoet(); | |
| 94 | + $this->classes['admin_importer_newsletter'] = new ConvertKit_Admin_Importer_Newsletter(); | |
| 95 | + $this->classes['admin_post'] = new ConvertKit_Admin_Post(); | |
| 96 | + $this->classes['admin_quick_edit'] = new ConvertKit_Admin_Quick_Edit(); | |
| 97 | + $this->classes['admin_restrict_content'] = new ConvertKit_Admin_Restrict_Content(); | |
| 98 | + $this->classes['admin_settings'] = new ConvertKit_Admin_Settings(); | |
| 99 | + $this->classes['admin_setup_wizard_landing_page'] = new ConvertKit_Admin_Setup_Wizard_Landing_Page(); | |
| 100 | + $this->classes['admin_setup_wizard_plugin'] = new ConvertKit_Admin_Setup_Wizard_Plugin(); | |
| 101 | + $this->classes['admin_setup_wizard_restrict_content'] = new ConvertKit_Admin_Setup_Wizard_Restrict_Content(); | |
| 99 | 102 | |
| 100 | 103 | /** |
| 101 | 104 | * Initialize integration classes for the WordPress Administration interface. |
| 102 | 105 | * |
| @@ -191,8 +194,9 @@ | ||
| 191 | 194 | $this->classes['blocks_convertkit_form_builder'] = new ConvertKit_Block_Form_Builder(); |
| 192 | 195 | $this->classes['blocks_convertkit_form_builder_field_email'] = new ConvertKit_Block_Form_Builder_Field_Email(); |
| 193 | 196 | $this->classes['blocks_convertkit_form_builder_field_name'] = new ConvertKit_Block_Form_Builder_Field_Name(); |
| 194 | 197 | $this->classes['blocks_convertkit_form_builder_field_custom'] = new ConvertKit_Block_Form_Builder_Field_Custom(); |
| 198 | + $this->classes['blocks_convertkit_member_content_login'] = new ConvertKit_Block_Member_Content_Login(); | |
| 195 | 199 | $this->classes['blocks_convertkit_product'] = new ConvertKit_Block_Product(); |
| 196 | 200 | $this->classes['block_formatter_form_link'] = new ConvertKit_Block_Formatter_Form_Link(); |
| 197 | 201 | $this->classes['block_formatter_product_link'] = new ConvertKit_Block_Formatter_Product_Link(); |
| 198 | 202 | $this->classes['pre_publish_action_broadcast_export'] = new ConvertKit_Pre_Publish_Action_Broadcast_Export(); |
| @@ -200,14 +204,16 @@ | ||
| 200 | 204 | $this->classes['broadcasts_exporter'] = new ConvertKit_Broadcasts_Exporter(); |
| 201 | 205 | $this->classes['broadcasts_importer'] = new ConvertKit_Broadcasts_Importer(); |
| 202 | 206 | $this->classes['elementor'] = new ConvertKit_Elementor(); |
| 203 | 207 | $this->classes['gutenberg'] = new ConvertKit_Gutenberg(); |
| 204 | - $this->classes['media_library'] = new ConvertKit_Media_Library(); | |
| 205 | - $this->classes['output_restrict_content'] = new ConvertKit_Output_Restrict_Content(); | |
| 206 | - $this->classes['review_request'] = new ConvertKit_Review_Request( 'Kit', 'convertkit', CONVERTKIT_PLUGIN_PATH ); | |
| 207 | - $this->classes['preview_output'] = new ConvertKit_Preview_Output(); | |
| 208 | - $this->classes['setup'] = new ConvertKit_Setup(); | |
| 209 | - $this->classes['shortcodes'] = new ConvertKit_Shortcodes(); | |
| 208 | + $this->classes['mcp'] = new ConvertKit_MCP(); | |
| 209 | + $this->classes['media_library'] = new ConvertKit_Media_Library(); | |
| 210 | + $this->classes['output_restrict_content'] = new ConvertKit_Output_Restrict_Content(); | |
| 211 | + $this->classes['restrict_content_cache'] = new ConvertKit_Restrict_Content_Cache(); | |
| 212 | + $this->classes['review_request'] = new ConvertKit_Review_Request( 'Kit', 'convertkit', CONVERTKIT_PLUGIN_PATH ); | |
| 213 | + $this->classes['preview_output'] = new ConvertKit_Preview_Output(); | |
| 214 | + $this->classes['setup'] = new ConvertKit_Setup(); | |
| 215 | + $this->classes['shortcodes'] = new ConvertKit_Shortcodes(); | |
| 210 | 216 | |
| 211 | 217 | /** |
| 212 | 218 | * Initialize integration classes for the frontend web site. |
| 213 | 219 | * |
| @@ -213,8 +219,54 @@ | ||
| 213 | 219 | * |
| 214 | 220 | * @since 1.9.6 |
| 215 | 221 | */ |
| 216 | 222 | do_action( 'convertkit_initialize_global' ); |
| 223 | + | |
| 224 | + } | |
| 225 | + | |
| 226 | + /** | |
| 227 | + * Initializes the MCP server if enabled in the Plugin's settings. | |
| 228 | + * | |
| 229 | + * @since 3.4.0 | |
| 230 | + */ | |
| 231 | + public function initialize_mcp() { | |
| 232 | + | |
| 233 | + // Bail if the MCP server is not enabled. | |
| 234 | + $settings = new ConvertKit_Settings_MCP(); | |
| 235 | + if ( ! $settings->enabled() ) { | |
| 236 | + return; | |
| 237 | + } | |
| 238 | + | |
| 239 | + // Bail if the Abilities API is unavailable (WordPress < 6.9). | |
| 240 | + if ( ! function_exists( 'wp_register_ability' ) ) { | |
| 241 | + return; | |
| 242 | + } | |
| 243 | + | |
| 244 | + // Bail if PHP 7.4+ is not installed, as this is required for the MCP Adapter classes. | |
| 245 | + if ( version_compare( PHP_VERSION, '7.4', '<' ) ) { | |
| 246 | + return; | |
| 247 | + } | |
| 248 | + | |
| 249 | + // Load MCP Adapter if another Plugin hasn't already loaded it. | |
| 250 | + if ( ! class_exists( 'WP\\MCP\\Core\\McpAdapter' ) ) { | |
| 251 | + // Bail if the WordPress MCP Adapter autoloader is missing. | |
| 252 | + if ( ! file_exists( CONVERTKIT_PLUGIN_PATH . '/vendor/autoload.php' ) ) { | |
| 253 | + return; | |
| 254 | + } | |
| 255 | + | |
| 256 | + // Load MCP Adapter. | |
| 257 | + require_once CONVERTKIT_PLUGIN_PATH . '/vendor/autoload.php'; | |
| 258 | + | |
| 259 | + // Bail if the MCP Adapter class doesn't exist - something went wrong with the autoloader. | |
| 260 | + if ( ! class_exists( 'WP\\MCP\\Core\\McpAdapter' ) ) { // @phpstan-ignore-line | |
| 261 | + return; | |
| 262 | + } | |
| 263 | + } | |
| 264 | + | |
| 265 | + // Bootstrap the MCP Adapter, per WordPress/mcp-adapter's recommended | |
| 266 | + // integration pattern. | |
| 267 | + // @see https://github.com/WordPress/mcp-adapter#using-mcp-adapter-in-your-plugin. | |
| 268 | + \WP\MCP\Core\McpAdapter::instance(); | |
| 217 | 269 | |
| 218 | 270 | } |
| 219 | 271 | |
| 220 | 272 | /** |