# Simple Post Views Counter

> Counts how many times each blog post is viewed, shows the total in a Views column in the posts list and adds a [post_views] shortcode for the front end.

- Type: PHP
- Runs: Run everywhere
- Category: [Content](https://wpide.com/library/category/content/)
- Tags: views, statistics, posts
- Author: WPIDE Team
- Installs: 0
- Updated: 2026-10-28
- Page: https://wpide.com/library/simple-post-views-counter/

## Code

```php
add_action( 'template_redirect', function () {
    if ( ! is_singular( 'post' ) || is_preview() || current_user_can( 'edit_posts' ) ) {
        return;
    }

    $agent = isset( $_SERVER['HTTP_USER_AGENT'] ) ? strtolower( sanitize_text_field( wp_unslash( $_SERVER['HTTP_USER_AGENT'] ) ) ) : '';

    if ( '' === $agent || preg_match( '/bot|crawl|spider|slurp|preview|monitor|facebookexternalhit/', $agent ) ) {
        return;
    }

    $post_id = get_queried_object_id();
    update_post_meta( $post_id, 'wpide_post_views', (int) get_post_meta( $post_id, 'wpide_post_views', true ) + 1 );
} );

add_shortcode( 'post_views', function ( $atts ) {
    $atts    = shortcode_atts( array( 'id' => 0 ), $atts, 'post_views' );
    $post_id = $atts['id'] ? absint( $atts['id'] ) : get_the_ID();

    return '<span class="wpide-post-views">' . esc_html( number_format_i18n( (int) get_post_meta( $post_id, 'wpide_post_views', true ) ) ) . '</span>';
} );

add_filter( 'manage_post_posts_columns', function ( $columns ) {
    $columns['wpide_views'] = 'Views';

    return $columns;
} );

add_action( 'manage_post_posts_custom_column', function ( $column, $post_id ) {
    if ( 'wpide_views' === $column ) {
        echo esc_html( number_format_i18n( (int) get_post_meta( $post_id, 'wpide_post_views', true ) ) );
    }
}, 10, 2 );
```

## Notes

Visits from logged-in editors and common bots are not counted. Full-page caching stops the counter from seeing cached visits.

## How to use it

Install the free WPIDE plugin (https://wordpress.org/plugins/wpide/), find "Simple Post Views Counter" in its snippet library and add it in one click; or create a new PHP snippet in WPIDE (or any code snippets plugin) and paste the code above. More snippets: https://wpide.com/library/
