exit here. if ( ! ai4seo_is_function_usable( 'is_admin' ) || ! is_admin() ) { return; } // init admin essentials for the backend after all plugins have been loaded. add_action( 'init', 'ai4seo_init_admin_area_essentials', 12 ); // on plugin deactivation. register_deactivation_hook( AI4SEO_PLUGIN_FILE, 'ai4seo_on_deactivation' ); if ( ai4seo_does_user_need_to_accept_tos_toc_and_pp() ) { return; } // Capture install eligibility before analysis, activation, or migration writes become historical evidence. add_action( 'init', 'ai4seo_initialize_welcome_notification_state', 1 ); // init cron jobs. add_action( 'init', 'ai4seo_init_cron_jobs' ); // do some checks after all plugins have been loaded. add_action( 'init', 'ai4seo_check_and_handle_plugin_update' ); // Check for unfinished analysis unless the full dashboard will choose fresh-versus-resume after counting posts. add_action( 'init', 'ai4seo_maybe_start_posts_table_analysis_on_init', 9 ); // check for new notifications. add_action( 'init', 'ai4seo_check_for_new_notifications', 13 ); // init admin essentials for the backend after all plugins have been loaded. add_action( 'init', 'ai4seo_send_additional_tos_accept_details' ); // on saving a post, check if the all ceo meta tags are filled. add_action( 'save_post', 'ai4seo_mark_post_to_be_analyzed', 20, 3 ); // add unified cache invalidation hooks for environmental-variable based caches. ai4seo_add_invalidate_caches_hooks(); // analyze the post after it has been saved, call ai4seo_handle_posts_to_be_analyzed() at the end of the request. add_action( 'shutdown', 'ai4seo_handle_posts_to_be_analyzed' ); // on plugin activation. register_activation_hook( AI4SEO_PLUGIN_FILE, 'ai4seo_on_activation' ); // Register native WordPress list bulk action integrations through the opt-in gate below. add_action( 'admin_init', 'ai4seo_register_bulk_generation_queue_bulk_actions' ); // Read-only editor shortcuts are independent of the opt-in bulk queue actions. add_filter( 'post_row_actions', 'ai4seo_add_native_editor_row_action', 10, 2 ); add_filter( 'page_row_actions', 'ai4seo_add_native_editor_row_action', 10, 2 ); add_filter( 'media_row_actions', 'ai4seo_add_native_editor_row_action', 10, 2 );