WordPress.org

Ready to get started?Download WordPress

Forums

WP-PostViews
Does Postviews work with Super Cache (5 posts)

  1. jeffutogo
    Member
    Posted 2 years ago #

    Hey, I found that the postviews does not increase as before, after I installed WP Super Cache.

    Does it work with Super Cache? Thanks!

    http://wordpress.org/extend/plugins/wp-postviews/

  2. hakaner
    Member
    Posted 1 year ago #

    Yes it's working, but not displaying real time counts on posts before the cleaning cache. So, it's counting in background with super cache. I hope, author adds a feature in future versions to resolve this issue.

  3. Amon
    Member
    Posted 1 year ago #

    Here is some change to support WP Super Cache.
    WP-PostViews 1.62

    function process_postviews() {
    	//...
    		//...
    			if($should_count) {
    				global $cache_enabled; //WP Super Cache enabled or not
    				if(defined('WP_CACHE') && WP_CACHE && $cache_enabled) {
    					echo "\n".'<!-- Start Of Script Generated By WP-PostViews -->'."\n";
    					//...
    				} else {
    					//...
    				}
    			}
    		//...
    	//...
    }
    
    function add_postviews_column($defaults) {
        $defaults['views'] = __('Views', 'wp-postviews');
        return $defaults;
    }
    
    //AJAX get post views
    add_action( 'wp_ajax_postviews_get', 'postviews_get' );
    add_action( 'wp_ajax_nopriv_postviews_get', 'postviews_get' );
    function postviews_get() {
    	if ( !empty( $_GET['postviews_id'] ) ) {
    		$post_id = intval( $_GET['postviews_id'] );
    		if ( $post_id > 0 ) {
    			$views_options = get_option( 'views_options' );
    			$post_views = get_post_custom( $post_id );
    			$output = str_replace( '%VIEW_COUNT%', number_format_i18n( intval( $post_views['views'][0] ) ), $views_options['template'] );
    			$output = apply_filters( 'the_views', $output );
    			echo $output;
    		}
    	}
    	exit();
    }
    
    //the_views support WP Super Cache via AJAX
    function the_views( $display = true, $prefix = '', $postfix = '', $always = false ) {
    	$output = '';
    	$views_options = get_option( 'views_options' );
    	if ( $always || should_views_be_displayed( $views_options ) ) {
    		global $cache_enabled;
    		if ( defined( 'WP_CACHE' ) && WP_CACHE && $cache_enabled ) {
    			global $post;
    			if ( is_int( $post ) ) {
    				$post = get_post( $post );
    			}
    			$id = intval( $post->ID );
    
    			wp_print_scripts( 'jquery' );
    			$output = "\n" . '<!-- Start Of Script WP-PostViews Get Action -->' . "\n";
    			$output .= '<font id="views_' . $id . '">&nbsp;</font>' . "\n";
    			$output .= '<script type="text/javascript">' . "\n";
    			$output .= '/* <![CDATA[ */' . "\n";
    			$output .= "jQuery.ajax({type:'GET',url:'" . admin_url( 'admin-ajax.php', ( is_ssl() ? 'https' : 'http' ) ) . "',data:'postviews_id=" . $id . "&action=postviews_get',cache:false,complete:function(jqXHR,textStatus){var obj=jQuery('#views_" . $id . "');obj.before('" . $prefix . "'+jqXHR.responseText+'" . $postfix . "');obj.remove();}});\n";
    			$output .= '/* ]]> */' . "\n";
    			$output .= '</script>' . "\n";
    			$output .= '<!-- End Of Script WP-PostViews Get Action -->' . "\n";
    		} else {
    			$output = $prefix . str_replace( '%VIEW_COUNT%', number_format_i18n( intval( post_custom( 'views' ) ) ), $views_options['template'] ) . $postfix;
    			$output = apply_filters( 'the_views', $output );
    		}
    	}
    	if ( $display ) {
    		echo $output;
    		return '';
    	} else {
    		return $output;
    	}
    }
  4. D J
    Member
    Posted 1 year ago #

    The code above works, but it is recommendable to be used only in single post.

    I tried it on a grid template with 50 posts and the website loaded in 30 seconds.

    Can you come up with a code that if a post is visited then reload the cache for that post.

  5. Amon
    Member
    Posted 1 year ago #

    if a post is visited then reload the cache for that post?

    I am sorry, You may get contact with the plugin author(if you can, or someone else known how WP Super Cache works), to solve this problem.

Topic Closed

This topic has been closed to new replies.

About this Plugin

About this Topic