AI Overviews are cutting your WordPress traffic

A client came to me last month, completely baffled. Their WordPress site had been pulling steady organic numbers for years, and then the graph fell off a cliff. Not a dip. A cliff. “Ahmad,” they said, “what on earth did Google do now?” Fair question, and the answer turned out to be bigger than one bad month in analytics.

My first move was the usual audit: keywords, content gaps, the standard checklist. Those matter, but a few days in it was clear the real issue was not what Google likes. It was how the site had been built to handle what Google has become. There was no broken meta description to fix. Readers had simply started getting their answers from AI overviews on the results page.

Where the WordPress traffic actually went

Google now puts AI summaries at the top of the results page, and Human Made wrote about what that does to traffic patterns. People read the answer and never click. For publishers that is rough: the steady stream of visitors gets absorbed by a summary box. If your WordPress site has nothing to offer past the answer itself, you will see it in the numbers.

Complaining about the change does nothing, so the work is giving people a reason to click anyway. That means content detailed enough, interactive enough, or specific enough that a two-sentence summary cannot stand in for it. On the technical side it means solid development and pages that are genuinely quick to use.

Where to start on the WordPress side

Most of the work behind these traffic drops happens in the foundation, and it goes well past installing a caching plugin. Structure your content semantically, keep your queries efficient, make the pages fast. CSS-Tricks put it well when they described growing their Almanac into a “treasure trove” of documentation that people keep coming back to.

If you run custom post types or anything with heavy data behind it, one sloppy query can wreck your server load, and with it the speed people actually experience. The snippet below is one way to keep custom queries lean when the site is under stress. Small thing on its own, but it adds up.

<?php
/**
 * Optimize custom WordPress queries for performance.
 *
 * @param array $query_args Array of WP_Query arguments.
 * @return array Modified query arguments.
 */
function bbioon_optimize_custom_query_args( $query_args ) {
    // Only apply optimizations to specific custom queries if needed.
    // if ( ! isset( $query_args['bbioon_custom_query'] ) || ! $query_args['bbioon_custom_query'] ) {
    //     return $query_args;
    // }

    // Always exclude spam comments for better performance in frontend.
    if ( isset( $query_args['post_type'] ) && ! empty( $query_args['post_type'] ) ) {
        $query_args['suppress_filters'] = true; // Use sparingly, but can help for raw performance.
        $query_args['no_found_rows']    = true; // If you don't need pagination count, skip it.
        $query_args['update_post_meta_cache'] = false; // Disable if you don't need post meta for each post.
        $query_args['update_post_term_cache'] = false; // Disable if you don't need post terms for each post.
    }

    return $query_args;
}
add_filter( 'pre_get_posts', 'bbioon_optimize_custom_query_args' );

/**
 * Example of a custom query that benefits from optimization.
 */
function bbioon_get_featured_articles() {
    $args = array(
        'post_type'      => 'post',
        'posts_per_page' => 5,
        'meta_key'       => 'bbioon_is_featured',
        'meta_value'     => '1',
        'bbioon_custom_query' => true, // Custom flag to trigger our filter, if uncommented.
    );
    $featured_query = new WP_Query( $args );

    if ( $featured_query->have_posts() ) {
        while ( $featured_query->have_posts() ) {
            $featured_query->the_post();
            // Display post content here
            // For example: the_title(), the_permalink()
        }
        wp_reset_postdata();
    }
}
?>

It hooks pre_get_posts and trims what WordPress does on every request: fewer database hits, no cache warming you are never going to read. From there you can go further with the Abilities API for specific user roles or with smarter AI workflows for content generation that produce material a summary box cannot flatten.

Building for the next update instead of this one

Stop patching after every Google update. Put the time into the quality of the site itself: code you can maintain, pages that load quickly, and articles that go deeper than the question that brought someone in. Plenty of people are writing now about how Google AI Overviews are impacting traffic, and they all land on the same question: what does your site give a reader that a summary cannot?

The goal is a site worth visiting on its own terms rather than a pile of pages built for a ranking. That holds up whatever the next algorithm change happens to reward.

This stuff gets complicated fast. If you are tired of debugging someone else’s mess and you just want the site to work, and to keep working, drop me a line. I have probably run into your exact problem already.

author avatar
Ahmad Wael
I'm a WordPress and WooCommerce developer with 15+ years of experience building custom e-commerce solutions and plugins. I specialize in PHP development, following WordPress coding standards to deliver clean, maintainable code. Currently, I'm exploring AI and e-commerce by building multi-agent systems and SaaS products that integrate technologies like Google Gemini API with WordPress platforms, approaching every project with a commitment to performance, security, and exceptional user experience.