Skip to content

Bits of .NET

Daily micro-tips for C#, SQL, performance, and scalable backend engineering.

  • Asp.Net Core
  • C#
  • SQL
  • JavaScript
  • CSS
  • About
  • ErcanOPAK.com
  • No Access
  • Privacy Policy
Wordpress

WordPress: Use the_posts Filter to Modify Query Results Globally

- 21.02.26 - ErcanOPAK

Modifying WP_Query output everywhere is repetitive. the_posts filter catches all query results in one place.

Add to functions.php:

add_filter('the_posts', function($posts, $query) {
    // Don't modify admin queries
    if (is_admin()) return $posts;
    
    // Example: Add reading time to all posts
    foreach ($posts as $post) {
        $word_count = str_word_count(strip_tags($post->post_content));
        $reading_time = ceil($word_count / 200);
        $post->reading_time = $reading_time . ' min read';
    }
    
    return $posts;
}, 10, 2);

// Use in templates
reading_time; ?>

Other Use Cases:

// Add view count from separate table
foreach ($posts as $post) {
    $post->view_count = get_view_count($post->ID);
}

// Inject ads every 3rd post
$posts_with_ads = [];
foreach ($posts as $i => $post) {
    $posts_with_ads[] = $post;
    if (($i + 1) % 3 === 0) {
        $ad = create_ad_post_object();
        $posts_with_ads[] = $ad;
    }
}
return $posts_with_ads;

Related posts:

WordPress Pages Look Different After Theme Updates

Why wp-cron Breaks Under Traffic (And How to Fix It)

WordPress Admin Loads Plugins You Don’t Use

Post Views: 4

Post navigation

Photoshop: Use Blend If for Non-Destructive Masking Based on Brightness
WordPress: Disable Gutenberg for Specific Post Types

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

March 2026
M T W T F S S
 1
2345678
9101112131415
16171819202122
23242526272829
3031  
« Feb    

Most Viewed Posts

  • Get the User Name and Domain Name from an Email Address in SQL (938)
  • How to add default value for Entity Framework migrations for DateTime and Bool (836)
  • Get the First and Last Word from a String or Sentence in SQL (828)
  • How to select distinct rows in a datatable in C# (801)
  • How to make theater mode the default for Youtube (736)
  • Add Constraint to SQL Table to ensure email contains @ (575)
  • How to enable, disable and check if Service Broker is enabled on a database in SQL Server (554)
  • Average of all values in a column that are not zero in SQL (523)
  • How to use Map Mode for Vertical Scroll Mode in Visual Studio (477)
  • Find numbers with more than two decimal places in SQL (441)

Recent Posts

  • C#: Saving Memory with yield return (Lazy Streams)
  • C#: Why Records are Better Than Classes for Data DTOs
  • C#: Creating Strings Without Memory Pressure with String.Create
  • SQL: Protecting Sensitive Data with Dynamic Data Masking
  • SQL: Writing Readable Queries with Common Table Expressions (CTE)
  • .NET Core: Handling Errors Gracefully with Middleware
  • .NET Core: Mastering Service Lifetimes (A Visual Guide)
  • Git: Surgical Stashing – Don’t Save Everything!
  • Git: Writing Commits That Your Future Self Won’t Hate
  • Ajax: Improving Perceived Speed with Skeleton Screens

Most Viewed Posts

  • Get the User Name and Domain Name from an Email Address in SQL (938)
  • How to add default value for Entity Framework migrations for DateTime and Bool (836)
  • Get the First and Last Word from a String or Sentence in SQL (828)
  • How to select distinct rows in a datatable in C# (801)
  • How to make theater mode the default for Youtube (736)

Recent Posts

  • C#: Saving Memory with yield return (Lazy Streams)
  • C#: Why Records are Better Than Classes for Data DTOs
  • C#: Creating Strings Without Memory Pressure with String.Create
  • SQL: Protecting Sensitive Data with Dynamic Data Masking
  • SQL: Writing Readable Queries with Common Table Expressions (CTE)

Social

  • ErcanOPAK.com
  • GoodReads
  • LetterBoxD
  • Linkedin
  • The Blog
  • Twitter
© 2026 Bits of .NET | Built with Xblog Plus free WordPress theme by wpthemespace.com