4 v w ` p L @ } } @5 | М R p 0 / K L 0 p } H i P M E F F G - C Q g y $ ( G 0 8 @ H P ! X 3 Y I ` W p x h h r $4 ! @ + ` 3 0 < D I N R [ P @ c `v ` h ( $this->get_queried_post_type() ); $this->redirect_feed( $url, 'We disable post type feeds for performance reasons.' ); } if ( \is_search() && $this->is_true( 'remove_feed_search' ) ) { $url = \trailingslashit( \home_url() ) . '?s=' . \get_search_query(); $this->redirect_feed( $url, 'We disable search RSS feeds for performance reasons.' ); } } /** * Sends a cache control header. * * @param int $expiration The expiration time. */ public function cache_control_header( $expiration ) { \header_remove( 'Expires' ); // The cacheability of the current request. 'public' allows caching, 'private' would not allow caching by proxies like CloudFlare. $cacheability = 'public'; $format = '%1$s, max-age=%2$d, s-maxage=%2$d, stale-while-revalidate=120, stale-if-error=14400'; if ( \is_user_logged_in() ) { $expiration = 0; $cacheability = 'private'; $format = '%1$s, max-age=%2$d'; } \header( \sprintf( 'Cache-Control: ' . $format, $cacheability, $expiration ), true ); } /** * Redirect a feed result to somewhere else. * * @param string $url The location we're redirecting to. * @param string $reason The reason we're redirecting. */ private function redirect_feed( $url, $reason ) { \header_remove( 'Content-Type' ); \header_remove( 'Last-Modified' ); $this->cache_control_header( 7 * \DAY_IN_SECONDS ); \wp_safe_redirect( $url, 301, 'Yoast SEO: ' . $reason ); exit; } /** * Retrieves the queried post type. * * @return string The queried post type. */ private function get_queried_post_type() { $post_type = \get_query_var( 'post_type' ); if ( \is_array( $post_type ) ) { $post_type = \reset( $post_type ); } return $post_type; } /** * Checks if the value of an option is set to true. * * @param string $option_name The option name. * * @return bool */ private function is_true( $option_name ) { return $this->options_helper->get( $option_name ) === true; } }