back' => [ 'Notifications', 'localBusinessOrganizationReminder' ], 'access' => 'any' ], 'notification/news-publication-name-reminder' => [ 'callback' => [ 'Notifications', 'newsPublicationNameReminder' ], 'access' => 'any' ], 'notification/v3-migration-local-business-number-reminder' => [ 'callback' => [ 'Notifications', 'migrationLocalBusinessNumberReminder' ], 'access' => 'any' ], 'notification/v3-migration-local-business-country-reminder' => [ 'callback' => [ 'Notifications', 'migrationLocalBusinessCountryReminder' ], 'access' => 'any' ], 'notification/import-local-business-country-reminder' => [ 'callback' => [ 'Notifications', 'importLocalBusinessCountryReminder' ], 'access' => 'any' ], 'notification/import-local-business-type-reminder' => [ 'callback' => [ 'Notifications', 'importLocalBusinessTypeReminder' ], 'access' => 'any' ], 'notification/import-local-business-number-reminder' => [ 'callback' => [ 'Notifications', 'importLocalBusinessNumberReminder' ], 'access' => 'any' ], 'notification/import-local-business-fax-reminder' => [ 'callback' => [ 'Notifications', 'importLocalBusinessFaxReminder' ], 'access' => 'any' ], 'notification/import-local-business-currencies-reminder' => [ 'callback' => [ 'Notifications', 'importLocalBusinessCurrenciesReminder' ], 'access' => 'any' ], 'schema/templates' => [ 'callback' => [ 'Schema', 'addTemplate' ], 'access' => 'aioseo_page_schema_settings' ], 'schema/validator/output' => [ 'callback' => [ 'Schema', 'getValidatorOutput' ], 'access' => 'aioseo_page_schema_settings' ], 'search-statistics/stats/keywords/posts' => [ 'callback' => [ 'SearchStatistics', 'getPagesByKeywords' ], 'access' => 'aioseo_search_statistics_settings' ], 'seo-revisions/(?P[\d]+)' => [ 'callback' => [ 'SeoRevisions', 'updateRevision' ], 'access' => 'aioseo_page_seo_revisions_settings' ], 'seo-revisions/restore/(?P[\d]+)' => [ 'callback' => [ 'SeoRevisions', 'restoreRevision' ], 'access' => 'aioseo_page_seo_revisions_settings' ], ], 'PUT' => [ 'schema/templates' => [ 'callback' => [ 'Schema', 'updateTemplate' ], 'access' => 'aioseo_page_schema_settings' ] ], 'DELETE' => [ 'schema/templates' => [ 'callback' => [ 'Schema', 'deleteTemplate' ], 'access' => 'aioseo_page_schema_settings' ], 'seo-revisions/(?P[\d]+)' => [ 'callback' => [ 'SeoRevisions', 'deleteRevision' ], 'access' => 'aioseo_page_seo_revisions_settings' ], ] // phpcs:enable WordPress.Arrays.ArrayDeclarationSpacing.AssociativeArrayFound ]; /** * Get all the routes to register. * * @since 4.0.0 * * @return array An array of routes. */ protected function getRoutes() { $routes = array_merge_recursive( parent::getRoutes(), $this->proRoutes ); $addonsRoutes = array_filter( aioseo()->addons->doAddonFunction( 'api', 'getRoutes' ) ); foreach ( $addonsRoutes as $addonRoute ) { $routes = array_replace_recursive( $addonRoute, $routes ); } return $routes; } /** * Pass any API class back to an addon to run a similar method. * * @since 4.1.0 * * @param \WP_REST_Request $request The original request. * @param \WP_REST_Response $response An optional response. * @param string $apiClass The class to call. * @param string $apiMethod The method to call on the class. * @return mixed Anything the addon needs to return. */ public static function addonsApi( $request, $response, $apiClass, $apiMethod ) { $loadedAddons = aioseo()->addons->getLoadedAddons(); if ( ! empty( $loadedAddons ) ) { foreach ( $loadedAddons as $addon ) { $class = new \ReflectionClass( $addon ); $addonClass = $class->getNamespaceName() . $apiClass; $classExists = class_exists( $addonClass ); $methodExists = method_exists( $addonClass, $apiMethod ); if ( $classExists && $methodExists ) { $response = call_user_func_array( [ $addonClass, $apiMethod ], [ $request, $response ] ); } } } return $response; } /** * Validates access from the routes array. * * @since 4.1.6 * * @param \WP_REST_Request $request The REST Request. * @return bool True if validated, false if not. */ public function validateAccess( $request ) { $routeData = $this->getRouteData( $request ); if ( empty( $routeData ) || empty( $routeData['access'] ) ) { return false; } // Admins always have access. if ( aioseo()->access->isAdmin() ) { return true; } switch ( $routeData['access'] ) { case 'everyone': // Any user is able to access the route. return true; case 'any': // The user has access if he has any of our capabilities. $user = wp_get_current_user(); foreach ( $user->get_role_caps() as $capability => $enabled ) { if ( $enabled && preg_match( '/^aioseo_/', $capability ) ) { return true; } } return false; default: // The user has access if he has any of the required capabilities. if ( ! is_array( $routeData['access'] ) ) { $routeData['access'] = [ $routeData['access'] ]; } foreach ( $routeData['access'] as $access ) { if ( current_user_can( $access ) ) { return true; } } return false; } } }
Fatal error: Uncaught Error: Class "AIOSEO\Plugin\Pro\Api\Api" not found in /home/valigeria/public_html/wp-content/plugins/all-in-one-seo-pack-pro/app/AIOSEO.php:331 Stack trace: #0 /home/valigeria/public_html/wp-content/plugins/all-in-one-seo-pack-pro/app/AIOSEO.php(97): AIOSEO\Plugin\AIOSEO->load() #1 /home/valigeria/public_html/wp-content/plugins/all-in-one-seo-pack-pro/app/AIOSEO.php(76): AIOSEO\Plugin\AIOSEO->init() #2 /home/valigeria/public_html/wp-content/plugins/all-in-one-seo-pack-pro/app/AIOSEO.php(414): AIOSEO\Plugin\AIOSEO::instance() #3 /home/valigeria/public_html/wp-content/plugins/all-in-one-seo-pack-pro/all_in_one_seo_pack.php(96): aioseo() #4 /home/valigeria/public_html/wp-settings.php(517): include_once('/home/valigeria...') #5 /home/valigeria/public_html/wp-config.php(111): require_once('/home/valigeria...') #6 /home/valigeria/public_html/wp-load.php(50): require_once('/home/valigeria...') #7 /home/valigeria/public_html/wp-blog-header.php(13): require_once('/home/valigeria...') #8 /home/valigeria/public_html/index.php(17): require('/home/valigeria...') #9 {main} thrown in /home/valigeria/public_html/wp-content/plugins/all-in-one-seo-pack-pro/app/AIOSEO.php on line 331