redirect = $redirect; $this->short_link_helper = $short_link_helper; } /** * Returns the conditionals based in which this loadable should be active. * * @return array */ public static function get_conditionals() { return [ Admin_Conditional::class ]; } /** * Initializes the integration. * * This is the place to register hooks and filters. * * @return void */ public function register_hooks() { \add_action( 'wp_loaded', [ $this, 'settings_redirect' ] ); } /** * Catch all method to redirect certain pages related to redirects. * * @return void */ public function settings_redirect() { // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Reason: We are not processing form information. if ( ! isset( $_GET['page'] ) ) { return; } // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Reason: We are not processing form information. $current_page = \sanitize_text_field( \wp_unslash( $_GET['page'] ) ); // The bulk editor moved from the Tools page to its own page. Redirect the legacy deep link, keying on the tool because wpseo_tools is still a live page. // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Reason: We are not processing form information. $current_tool = ( isset( $_GET['tool'] ) && \is_string( $_GET['tool'] ) ) ? \sanitize_text_field( \wp_unslash( $_GET['tool'] ) ) : ''; if ( $current_page === 'wpseo_tools' && $current_tool === 'bulk-editor' ) { $this->redirect->do_safe_redirect( \admin_url( 'admin.php?page=wpseo_page_bulk_edit' ), 301 ); return; } switch ( $current_page ) { case 'wpseo_titles': // Redirect to new settings URLs. We're adding this, so that not-updated add-ons don't point to non-existent pages. $this->redirect->do_safe_redirect( \admin_url( 'admin.php?page=wpseo_page_settings#/site-representation' ), 301 ); return; case 'wpseo_redirects_tools': // Redirect to Yoast redirection page, from the respective WP tools page. $this->redirect->do_safe_redirect( \admin_url( 'admin.php?page=wpseo_redirects&from_tools=1' ), 302 ); return; case 'wpseo_brand_insights': $this->redirect->do_unsafe_redirect( $this->short_link_helper->get( 'https://yoa.st/brand-insights-wp-admin' ), 302 ); return; case 'wpseo_brand_insights_premium': $this->redirect->do_unsafe_redirect( $this->short_link_helper->get( 'https://yoa.st/brand-insights-wp-admin-premium' ), 302 ); return; default: return; } } /** * Old method kept for backward compatibility. * * @deprecated 26.2 * @codeCoverageIgnore Because of deprecation. * @return void */ public function old_settings_redirect() { \_deprecated_function( __METHOD__, 'Yoast SEO 26.2', 'Use settings_redirect() instead.' ); $this->settings_redirect(); } }