P,U0C@s,U@+r,U`C`Q,U`CpQ,U pC6vq,Up,U``Cs,U.Y,U`0CZP,U Cs,U4,U.r,U`BQ,UBQ,U{,U4,U.Y,U`PBZP,U@Bs,U,U4,U+`,UABr,U`A Q,U A0Q_,U0 @M,U@PN ,UPGЗ,Up@A=`_,U0APA,U`uP,Up ,UpIJ,U@,U+,U@Θ,U@Ә,UΘ,UP@Θ,U@@S,UP,U *@,U@S,U?QY,U`?ZP,U? s,U `+C,U??qr,U`?0Q,U0?@QĘ,U@PA,UP<,UP +C,U0?P?qr,U`P?pQ,Up@?QĘ,UPA,U<`,U@>Wvq,U,U*r,U`>Q,U>Q,U@P>[vq,UY,U`@>ZP,U0>s,U+r,U`>Q,U>Q,U@=`vq,UY,U`= ZP,U =0s,U0`+C,Up==qr,U`=@Q,U@=PQĘ,UPPA,U`<,U` +C,U =@=qr,U`@=Q,U0=QĘ,UPA,U<`,U@p<hvq,U,U*r,U`<Q,U<Q,U@@<lvq,UY,U`0<ZP,U <s,U`+r,U`<Q,U; Q,U@;qvq,U r,U@;0Q",U;0@,U@`+l,U@`;vvq,UP;,U*Y,U` ;`ZP,U`;ps,Up +C,U:;qr,U`;Q,U;QĘ,UPA`_,U:`A,U<`,U@ :yvq,UY,U``:ZP,UP:s,U`+C,U :@:qr,U`@:Q,U0:QĘ,UPA,U<,U +C,U99qr,U`9 Qs Query arguments. * * @return array|false|WP_Error */ public function get_search_analytics( $args = [] ) { $dates = Base::get_dates(); $start_date = isset( $args['start_date'] ) ? $args['start_date'] : $dates['start_date']; $end_date = isset( $args['end_date'] ) ? $args['end_date'] : $dates['end_date']; $dimensions = isset( $args['dimensions'] ) ? $args['dimensions'] : 'date'; $row_limit = isset( $args['row_limit'] ) ? $args['row_limit'] : Api::get()->get_row_limit(); $params = [ 'startDate' => $start_date, 'endDate' => $end_date, 'rowLimit' => $row_limit, 'dimensions' => \is_array( $dimensions ) ? $dimensions : [ $dimensions ], ]; $stored = get_option( 'rank_math_google_analytic_profile', [ 'country' => '', 'profile' => '', 'enable_index_status' => true, ] ); $country = isset( $args['country'] ) ? $args['country'] : $stored['country']; $profile = isset( $args['profile'] ) ? $args['profile'] : $stored['profile']; if ( 'all' !== $country ) { $params['dimensionFilterGroups'] = [ [ 'filters' => [ [ 'dimension' => 'country', 'operator' => 'equals', 'expression' => $country, ], ], ], ]; } if ( empty( $profile ) ) { $profile = trailingslashit( strtolower( home_url() ) ); } $workflow = 'console'; $this->set_workflow( $workflow ); $response = $this->http_post( 'https://www.googleapis.com/webmasters/v3/sites/' . rawurlencode( $profile ) . '/searchAnalytics/query', $params ); $this->log_failed_request( $response, $workflow, $start_date, func_get_args() ); if ( ! $this->is_success() ) { return new WP_Error( 'request_failed', __( 'The Google Search Console request failed.', 'seo-by-rank-math' ) ); } if ( ! isset( $response['rows'] ) ) { return false; } return $response['rows']; } /** * Is site verified. * * @param string $url Site to verify. * * @return boolean */ public function is_site_verified( $url ) { $response = $this->http_get( 'https://www.googleapis.com/siteVerification/v1/webResource/' . rawurlencode( $url ) ); if ( ! $this->is_success() ) { return false; } return isset( $response['owners'] ); } /** * Sync sitemaps with google search console. */ public function sync_sitemaps() { $site_url = self::get_site_url(); $data = $this->get_sitemap_to_sync(); // Submit it. if ( ! $data['sitemaps_in_list'] ) { $this->add_sitemap( $site_url, $data['local_sitemap'] ); } if ( empty( $data['delete_sitemaps'] ) ) { return; } // Delete it. foreach ( $data['delete_sitemaps'] as $sitemap ) { $this->delete_sitemap( $site_url, $sitemap ); } } /** * Get sitemaps to sync. * * @return array */ private function get_sitemap_to_sync() { $delete_sitemaps = []; $sitemaps_in_list = false; $site_url = self::get_site_url(); $sitemaps = $this->get_sitemaps( $site_url ); $local_sitemap = trailingslashit( $site_url ) . Sitemap::get_sitemap_index_slug() . '.xml'; // Early Bail if there are no sitemaps. if ( empty( $sitemaps ) ) { return compact( 'delete_sitemaps', 'sitemaps_in_list', 'local_sitemap' ); } foreach ( $sitemaps as $sitemap ) { if ( $sitemap['path'] === $local_sitemap ) { $sitemaps_in_list = true; continue; } $delete_sitemaps[] = $sitemap['path']; } return compact( 'delete_sitemaps', 'sitemaps_in_list', 'local_sitemap' ); } /** * Get site url. * * @return string */ public static function get_site_url() { static $rank_math_site_url; if ( is_null( $rank_math_site_url ) ) { $default = trailingslashit( strtolower( home_url() ) ); $rank_math_site_url = get_option( 'rank_math_google_analytic_profile', [ 'profile' => $default ] ); $rank_math_site_url = empty( $rank_math_site_url['profile'] ) ? $default : $rank_math_site_url['profile']; if ( Str::contains( 'sc-domain:', $rank_math_site_url ) ) { $rank_math_site_url = str_replace( 'sc-domain:', '', $rank_math_site_url ); $rank_math_site_url = ( is_ssl() ? 'https://' : 'http://' ) . $rank_math_site_url; } } return $rank_math_site_url; } /** * Check if console is connected. * * @return boolean Returns True if the console is connected, otherwise False. */ public static function is_console_connected() { $profile = wp_parse_args( get_option( 'rank_math_google_analytic_profile' ), [ 'profile' => '', 'country' => 'all', ] ); return ! empty( $profile['profile'] ); } /** * Is valid connection */ public static function is_valid_connection() { return Api::get()->get_connection_status( self::CONNECTION_STATUS_KEY ); } /** * Test connection */ public static function test_connection() { return Api::get()->check_connection_status( self::CONNECTION_STATUS_KEY, [ Api::get(), 'get_search_analytics' ] ); } }