WPBeginner

Beginner's Guide for WordPress

  • Blog
    • Beginners Guide
    • News
    • Opinion
    • Showcase
    • Themes
    • Tutorials
    • WordPress Plugins
  • Start Here
  • Deals
  • Glossary
  • Videos
  • Products
X
☰
Beginner's Guide for WordPress / Start your WordPress Blog in minutes
Choosing the Best
WordPress Hosting
How to Easily
Install WordPress
Recommended
WordPress Plugins
View all Guides

WPBeginner» Blog» Tutorials» How to Display Popular Posts by Views in WordPress without a Plugin

How to Display Popular Posts by Views in WordPress without a Plugin

Last updated on April 1st, 2013 by Editorial Staff
82 Shares
Share
Tweet
Share
Special WordPress Hosting offer for WPBeginner Readers
How to Display Popular Posts by Views in WordPress without a Plugin

In the past we have shown you how to create a popular post tabber in WordPress using a plugin. That plugin works great out the box for tabbers. However, we wanted more customization in our layout, so we decided to do it without a plugin. In this article, we will show you how to track and display popular posts by views in WordPress without using any plugins.

An example of our custom popular post display is shown in the screenshot below:

Popular Posts Example

First thing we need to do is create a function that will detect post views count and store it as a custom field for each post. To do this, paste the following codes in your theme’s functions.php file or better in a site-specific plugin:

function wpb_set_post_views($postID) {
    $count_key = 'wpb_post_views_count';
    $count = get_post_meta($postID, $count_key, true);
    if($count==''){
        $count = 0;
        delete_post_meta($postID, $count_key);
        add_post_meta($postID, $count_key, '0');
    }else{
        $count++;
        update_post_meta($postID, $count_key, $count);
    }
}
//To keep the count accurate, lets get rid of prefetching
remove_action( 'wp_head', 'adjacent_posts_rel_link_wp_head', 10, 0);

Now that you have this function in place, we need to call this function on the single post pages. This way the function knows exactly which post gets the credit for the views. To do this, you would need to paste the following code inside your single post loop:

wpb_set_post_views(get_the_ID());

If you are using a child theme or you just want to make things easy for yourself, then you should simply add the tracker in your header by using wp_head hook. So paste the following code in your theme’s functions.php file or the site-specific plugin:

function wpb_track_post_views ($post_id) {
    if ( !is_single() ) return;
    if ( empty ( $post_id) ) {
        global $post;
        $post_id = $post->ID;    
    }
    wpb_set_post_views($post_id);
}
add_action( 'wp_head', 'wpb_track_post_views');

Once you have placed this, every time a user visits the post, the custom field will be updated.

Note: If you are using a caching plugin, this technique will NOT work by default. We are using W3 Total Cache, and it has the feature called Fragmented Caching. You can use that to make this work just fine. Here is what needs to be changed:

<!-- mfunc wpb_set_post_views($post_id); --><!-- /mfunc -->

Now, you can do all sort of cool stuff such as display post view count, or sort posts by view count. Lets take a look at how to do some of these cool things.

If you want to display the post view count on your single post pages (often next to the comment count or something). Then the first thing you need to do is add the following in your theme’s functions.php file or the site-specific plugin.

function wpb_get_post_views($postID){
    $count_key = 'wpb_post_views_count';
    $count = get_post_meta($postID, $count_key, true);
    if($count==''){
        delete_post_meta($postID, $count_key);
        add_post_meta($postID, $count_key, '0');
        return "0 View";
    }
    return $count.' Views';
}

Then inside your post loop add the following code:

wpb_get_post_views(get_the_ID());

If you want to sort the posts by view count, then you can do so easily by using the the wp_query post_meta parameter. The most basic example loop query would look like this:

<?php 
$popularpost = new WP_Query( array( 'posts_per_page' => 4, 'meta_key' => 'wpb_post_views_count', 'orderby' => 'meta_value_num', 'order' => 'DESC'  ) );
while ( $popularpost->have_posts() ) : $popularpost->the_post();

the_title();

endwhile;
?>

To add other WP_Query parameters such as time range, refer to the WP_Query page on Codex.

We hope that you enjoyed this post.

82 Shares
Share
Tweet
Share
Popular on WPBeginner Right Now!
  • Step by Step Guide: How to Start a Podcast with WordPress

    How to Start Your Own Podcast (Step by Step)

  • Google Analytics in WordPress

    How to Install Google Analytics in WordPress for Beginners

  • How to Properly Move Your Blog from WordPress.com to WordPress.org

  • Why Build Your Email List Today

    Revealed: Why Building Your Email List is so Important Today!

About the Editorial Staff

Editorial Staff at WPBeginner is a team of WordPress experts led by Syed Balkhi. Page maintained by Syed Balkhi.

The Ultimate WordPress Toolkit

140 Comments

Leave a Reply
  1. Chris says:
    Feb 27, 2018 at 7:00 pm

    Is it beyond the scope of this article to explain had you assign the functions to those buttons as in your screenshot:

    Recent Articles – Popular Posts – editor’s picks

    That is basically what I want to do…have buttons at the top of my posts page for recent, popular/trending, editors picks. I haven’t found any plugins that can do that. The all focus on side bar widgets.

    It looks like your article is starting to talk about this but where to go from there is beyond my current knowledge level.

    Thanks,
    Chris

    Reply
  2. Sakshi Grover says:
    Nov 10, 2017 at 1:54 am

    This was very helpful.!!! Thanks a ton.!

    Reply
  3. Amit Biswas says:
    Sep 6, 2017 at 6:10 am

    Getting double view count on refresh (single.php). Don’t know if the remove action is working or not for “adjacent_posts_rel_link_wp_head”. Useless so far. I tried everything that is possible to remove double count. Using this code in a custom made plugin.

    Reply
  4. Hans says:
    Sep 4, 2017 at 1:16 pm

    Thsi thing works greats.

    Now I want the columnn in admin to be sortable. any idea how to do this?

    many thanks!

    Reply
  5. Trevor says:
    Apr 5, 2017 at 7:08 pm

    Hey, thanks for the code. Only issue I’m having is the view count is incrementing by 2 instead of 1 on refresh. Any thoughts?

    Reply
    • Shwet says:
      Jun 2, 2017 at 3:05 am

      I have the same problem with this code.
      Have you found any solution of this?

      Reply
    • Fuchel says:
      Jul 2, 2017 at 4:40 am

      This was happening for me because I had:

      `set_post_views(get_the_ID());` in single.php
      AND
      `add_action( ‘wp_head’, ‘track_post_views’);` in my functions.php which was also adding `set_post_views(get_the_ID());` within it.

      By removing the line on single.php I fixed the double count.

      Reply
  6. Maya says:
    Mar 10, 2017 at 2:24 am

    How to show most popular posts on my home page?

    Reply
  7. Shaq says:
    Mar 4, 2017 at 2:26 pm

    How do I do this for a weekly basis, most viewed posts each week?!

    Reply
  8. iftkhar hussain says:
    Dec 7, 2016 at 12:34 am

    ah , this works fine ;
    thanks dear !

    Reply
  9. Bülent Sakarya says:
    Nov 15, 2016 at 6:16 pm

    Hello..

    Using w3total cache but count not working correctly.

    don’t use child theme. how can I fix it?

    thanks..

    Reply
  10. Ryley Ameden says:
    Oct 20, 2016 at 12:54 pm

    Fixed this issue:

    Cannot use WP_Query, used get_posts and it is now working. Then use a foreach look to loop through the posts and display them. See below:

    $blog_cat_array = get_the_category();
    $blog_cat = $blog_cat_array[0]->term_id;

    $popularpost = array(
    ‘posts_per_page’ => 2,
    ‘meta_key’ => ‘wpb_post_views_count’,
    ‘orderby’ => ‘meta_value_num’,
    ‘order’ => ‘DESC’,
    ‘category’ => $blog_cat,
    ‘post_type’ => ‘post’,
    );
    $pop_posts = get_posts($popularpost);

    foreach($pop_posts as $pop_post){
    the_title();
    }

    Reply
  11. Philipp says:
    Sep 21, 2016 at 7:24 pm

    Is there a possibility to count only unique visitors? Thank you

    Reply
  12. Zeeshan says:
    Sep 2, 2016 at 12:48 pm

    Simple Awesome …. (Y)

    Reply
  13. Erwin Barendregt says:
    Aug 2, 2016 at 2:25 pm

    I really like this option and have built it into my site.
    I have one question regarding the count. I found that the counts were rather high so I changed the code around a bit. With every count increase I wrote the IP address to a log file. I found hat two-third of the counts were legit and the other ones came from googlebot, apple, etc. and just now apews Is there any way to get the counts right and do you know if the ‘regular’ plugins have found a way around this?
    Thx!
    BTW: Keep up the good work, I thoroughly enjoy this site!

    Reply
    • bah says:
      Aug 3, 2016 at 10:16 am

      you can take maxmind ISP IP database and only count humans. This is the best option. Second just dont count common bots user-agent-names

      Reply
      • Erwin Barendregt says:
        Aug 11, 2016 at 11:56 am

        Thanks so much. I will definitely look into that.
        In the mean time I implemneted the solution which was implemented in the WordPress Popular Posts plugin. That works for now, but the solution you recommended seems more future-proof. Thanks again!

        Reply
  14. HiepTD says:
    Jun 3, 2016 at 11:37 am

    Hello, I am using WP Super Cache.
    I do not know how this code works correctly.

    Reply
  15. Krishna says:
    May 16, 2016 at 5:51 am

    It is not working for Custom Post Type. Can you help me on this please..

    Reply
  16. John says:
    Apr 27, 2016 at 2:54 pm

    Hi! Awesome! This code helped me a lot!

    Do you know how to display the posts with 0 views? I have to enter to the post page by using the url the first time, otherwise it doesn’t show.

    Reply
  17. Gianmarco says:
    Apr 22, 2016 at 6:53 am

    Awesome thanks this is really useful, but a question. Doesn’t it slow down the loading of the page significantly?

    Reply
  18. ayaz says:
    Mar 14, 2016 at 3:06 am

    Hi,

    This is very useful post, i really appreciate. Can i filter the post in category, I wanted to show the post of specific category.

    Thanks.

    Reply
  19. Md Maruf Adnan Sami says:
    Mar 5, 2016 at 1:42 pm

    How can i set Features post on Mobilepress Hompage?
    Please give me that code.

    Reply
  20. gift charles says:
    Mar 2, 2016 at 5:43 am

    Thank you for this awesome post, you guys are the best

    Reply
  21. Bojan says:
    Jan 25, 2016 at 11:04 pm

    Ok this is great. For some reason, post count doesnt show numbers, not sure is it because i work on a local., but what i wanted to ask even more, is how to add so it count only in the last 7 days?

    Reply
  22. Blown says:
    Dec 29, 2015 at 11:53 am

    Hi, How can I show the most popular posts for the current week??

    Reply
  23. Ashish says:
    Dec 26, 2015 at 2:19 pm

    Awesome Article !! Thanks. Would be better if code was explained in detail.

    Reply
  24. Dhiraj Kataria says:
    Dec 6, 2015 at 3:03 pm

    I need advice on how r u to Load Word files to a WordPress website please. Is there an easy way?

    Reply
  25. DarkSafka says:
    Sep 29, 2015 at 11:09 am

    Sadly this does not work with W3 Total Cache with Page Caching enabled. Coul not get any “fragmented caching” to work either.

    Reply
    • Fakrul says:
      Oct 31, 2015 at 9:40 am

      Same here @DARKSAFKA . Not working.

      Reply
  26. Riya says:
    Sep 23, 2015 at 4:09 am

    nice code. work perfectly….

    Reply
    • hmmm says:
      Feb 8, 2016 at 7:27 am

      you are right

      Reply
  27. REIBI says:
    Sep 21, 2015 at 10:00 pm

    Hey,
    This works great. But I need to show popular post of a day, this code shows popular posts of all time. Is there anyway to show popular posts of a day only.

    Any help will be greatly appreciated.

    Thanks :)

    Reply
    • Dimitrios Arkolakis says:
      Mar 1, 2016 at 5:03 am

      Try to add something like this in the WP Query

      ‘date_query’ => array(
      array(
      ‘year’ => $today[‘year’],
      ‘month’ => $today[‘mon’],
      ‘day’ => $today[‘mday’],
      ),

      Reply
      • Nick Heurter says:
        Jun 10, 2016 at 5:30 am

        This doesn’t seems to work. Is there anyone who figures out how to display the most popular posts of the lasts 7 days?

        Thanks!

        Reply
    • Yonatan says:
      Apr 11, 2017 at 11:06 am

      Add this code to the query

      ‘date_query’ => array(
      array(
      ‘after’ => ‘1 week ago’
      )
      )

      Reply
  28. Mawardiy says:
    Jul 8, 2015 at 6:00 pm

    Hi, I use Goodnews 5.7.2 theme, but where i put “wpb_get_post_views(get_the_ID());” in my theme, thank for u’r guidance

    Reply
  29. Alex says:
    Jul 7, 2015 at 6:55 pm

    Hey, thanks for the information.
    There’s a little problem. I put:

    function wpb_set_post_views($postID) {
    $count_key = ‘wpb_post_views_count’;
    $count = get_post_meta($postID, $count_key, true);
    if($count==”){
    $count = 0;
    delete_post_meta($postID, $count_key);
    add_post_meta($postID, $count_key, ‘0’);
    }else{
    $count++;
    update_post_meta($postID, $count_key, $count);
    }
    }
    //To keep the count accurate, lets get rid of prefetching
    remove_action( ‘wp_head’, ‘adjacent_posts_rel_link_wp_head’, 10, 0);

    function wpb_track_post_views ($post_id) {
    if ( !is_single() ) return;
    if ( empty ( $post_id) ) {
    global $post;
    $post_id = $post->ID;
    }
    wpb_set_post_views($post_id);
    }
    add_action( ‘wp_head’, ‘wpb_track_post_views’);

    function wpb_get_post_views($postID){
    $count_key = ‘wpb_post_views_count’;
    $count = get_post_meta($postID, $count_key, true);
    if($count==”){
    delete_post_meta($postID, $count_key);
    add_post_meta($postID, $count_key, ‘0’);
    return “0 View”;
    }
    return $count.’ Views’;
    }

    and my visits counts always as two. What’s happening? Thanks.

    Reply
  30. 6b says:
    May 10, 2015 at 12:22 pm

    Really great instruction no need of plugin.works perfect.

    Reply
  31. Paritosh Arya says:
    Apr 30, 2015 at 11:57 pm

    What table does this custom field get stored into? Is it the posts table or the postmeta?

    Reply
    • ScoDal says:
      Sep 5, 2015 at 5:55 pm

      I modified this a little to use it as a shortcode. To use this with a shortcode, add this to your functions.php:

      function wpb_set_post_views($postID) {
      $count_key = ‘wpb_post_views_count’;
      $count = get_post_meta($postID, $count_key, true);
      if($count==”){
      $count = 0;
      delete_post_meta($postID, $count_key);
      add_post_meta($postID, $count_key, ‘0’);
      }else{
      $count++;
      update_post_meta($postID, $count_key, $count);
      }
      }
      //To keep the count accurate, lets get rid of prefetching
      remove_action( ‘wp_head’, ‘adjacent_posts_rel_link_wp_head’, 10, 0);

      function wpb_track_post_views ($post_id) {
      if ( !is_single() ) return;
      if ( empty ( $post_id) ) {
      global $post;
      $post_id = $post->ID;
      }
      wpb_set_post_views($post_id);
      }
      add_action( ‘wp_head’, ‘wpb_track_post_views’);

      function wpb_get_post_views($postID){
      $count_key = ‘wpb_post_views_count’;
      $count = get_post_meta($postID, $count_key, true);
      if($count==”){
      delete_post_meta($postID, $count_key);
      add_post_meta($postID, $count_key, ‘0’);
      return “0 View”;
      }
      return $count.’ Views’;
      }

      function wpb_most_viewed_posts() {
      // start output buffering
      ob_start();
      ?>
      4, ‘meta_key’ => ‘wpb_post_views_count’, ‘orderby’ => ‘meta_value_num’, ‘order’ => ‘DESC’);

      //begin loop
      while ($query->have_posts()) : $query->the_post(); ?>

      <?php

      // Turn off output buffering
      $theResult = ob_get_clean();

      //Return output
      return $theResult;
      }
      // Create shortcode
      add_shortcode('wpb_most_viewed', 'wpb_most_viewed_posts');

      //Enable shortcode execution in text widgets
      add_filter('widget_text', 'do_shortcode');

      Then simply add [wpb_most_viewed] to your desired page/post and it should display your most popular posts.

      Reply
  32. Marcos says:
    Apr 18, 2015 at 8:44 am

    Hello. Huge thanks for that. Works very well in my theme.

    Reply
  33. John says:
    Apr 16, 2015 at 10:33 am

    Hello, great tutorial but I have one question.
    After following all of the steps the template isn’t paginating. It’s only showing the default 10 posts. Should this happen or is there a way to get it to paginate?

    Reply
  34. Varange says:
    Feb 10, 2015 at 3:46 am

    Folks, please help. Just cannot figure it out.

    How do I change the args to the wp-query to show the most popular posts for the last week? Or month?

    Reply
  35. Denis says:
    Feb 9, 2015 at 12:27 pm

    Hello,
    can I do this with comments? I dont use any comments on my site so I could use this comment count to check my most popular page without adding a comment?
    Cheers,
    Denis

    Reply
  36. Kes says:
    Oct 23, 2014 at 11:49 am

    How do i make this work with w3 total cache? I’ve tried the fragment cache suggestion but changes nothing

    Reply
  37. Kes says:
    Oct 17, 2014 at 6:04 am

    I’ve found a number of tuts covering this topic but none seem to spell out where the line goes.

    I’ve tried it inside PHP tags and it breaks the page. If i place it in the HTML it just renders as a comment when you view source and no php is generated.

    Any ideas? I’m w3 total cache and my page views aren’t getting updated

    Reply
  38. jarc100 says:
    Aug 29, 2014 at 2:08 am

    Thanks, this works as charm, but i didn’t get how to use it with the W3 Total Cache. :P

    Reply
  39. Jorge says:
    Jul 5, 2014 at 1:35 am

    Hello! How can I show the most popular posts for the current week?? Is there any possible? Thanks in advance.

    Reply
  40. Bigdragon13th says:
    Jun 23, 2014 at 7:33 am

    Hello,
    I’m using this code for months and it’s works great! That’s before I start using W3 Total cache and the code stop counting view for me.
    I struck at where and how do I need to put the mfunc code. Can you point that out for me?
    FYI, I put all of the codes in site-specific plugin.

    Reply
  41. Bigdragon13th says:
    Jun 23, 2014 at 6:27 am

    Hello,
    I’ve using this code for months and it’s work greats! That’s until I start using W3 Total Cache and this code stop count views for me.
    I’m struck at where do I need to put the mfunc to let the code work with cache. Can you point that out?
    FYI, I put all the code in a site-specific plugin.

    Reply
  42. AJ says:
    Jun 20, 2014 at 11:27 am

    Hell this is great! How would I display the view count outside of the post loop like in the sidebar?

    Reply
  43. leslie says:
    Jun 14, 2014 at 5:04 am

    hello, I have some problem on how setting up like when the login user won’t include on the count while viewing any pages?? how to do that.. please need some help on these. thanks

    Reply
  44. Sarah says:
    May 29, 2014 at 10:12 am

    Hey there, thanks for this. REALLY helpful!! Would you know how to apply a time range to this code? For example to show the most popular posts in the last day, week or month etc? I know there are plugins for this but I would like to do it without one :)

    Reply
  45. Dale Knight says:
    May 2, 2014 at 11:03 am

    Great!

    Reply
  46. Denis says:
    Apr 11, 2014 at 7:41 am

    Hello,
    thanks for this nice tutorial. It works on my page!

    – how can I exclude robots and spiders that hit my posts?
    – May be I can set a timer of 10 seconds. after that the count should rise. So the people who only click thourgh the posts are not counted.

    Cheers,
    Denis

    Reply
  47. Sarah says:
    Mar 10, 2014 at 1:07 pm

    You have no idea how much time you saved me. Thank you, works perfectly! :)

    Reply
  48. Clay Hickman says:
    Feb 28, 2014 at 10:47 am

    Thanks for the tip. Will use.

    Reply
  49. Jenni B says:
    Feb 5, 2014 at 1:52 pm

    Hello – thanks so much for this! I noticed the question regarding the W3TC workaround, but have a slightly different question: does that still apply if I’m hooking into wp_head from functions.php, and if so, how exactly do I implement it there? Thank you!

    Reply
  50. rafi says:
    Jan 30, 2014 at 3:34 am

    this is really easy and very helpful! thanks man!

    Reply
« 1 2

Leave a Reply Cancel reply

Thanks for choosing to leave a comment. Please keep in mind that all comments are moderated according to our comment policy, and your email address will NOT be published. Please Do NOT use keywords in the name field. Let's have a personal and meaningful conversation.

Over 600,000+ Readers

Get fresh content from WPBeginner

Featured WordPress Plugin
MonsterInsights
MonsterInsights
Google Analytics made easy for WordPress. Learn More »
How to Start a Blog How to Start a Blog
I need help with ...
Starting a
Blog
WordPress
Performance
WordPress
Security
WordPress
SEO
WordPress
Errors
Building an
Online Store
Useful WordPress Guides
    • 7 Best WordPress Backup Plugins Compared (Pros and Cons)
    • How to Fix the Error Establishing a Database Connection in WordPress
    • Why You Need a CDN for your WordPress Blog? [Infographic]
    • 25 Legit Ways to Make Money Online Blogging with WordPress
    • Self Hosted WordPress.org vs. Free WordPress.com [Infograph]
    • Free Recording: WordPress Workshop for Beginners
    • 24 Must Have WordPress Plugins for Business Websites
    • How to Properly Move Your Blog from WordPress.com to WordPress.org
    • 5 Best Contact Form Plugins for WordPress Compared
    • Which is the Best WordPress Popup Plugin? (Comparison)
    • Best WooCommerce Hosting in 2018 (Comparison)
    • How to Fix the Internal Server Error in WordPress
    • How to Install WordPress - Complete WordPress Installation Tutorial
    • Why You Should Start Building an Email List Right Away
    • How to Properly Move WordPress to a New Domain Without Losing SEO
    • How to Choose the Best WordPress Hosting for Your Website
    • How to Choose the Best Blogging Platform (Comparison)
    • WordPress Tutorials - 200+ Step by Step WordPress Tutorials
    • 5 Best WordPress Ecommerce Plugins Compared
    • 5 Best WordPress Membership Plugins (Compared)
    • 7 Best Email Marketing Services for Small Business (2018)
    • Which is the Best WordPress Slider? Performance + Quality Compared
    • The Truth About Shared WordPress Web Hosting
    • When Do You Really Need Managed WordPress Hosting?
    • 5 Best Drag and Drop WordPress Page Builders Compared
    • How to Switch from Blogger to WordPress without Losing Google Rankings
    • How to Properly Switch From Wix to WordPress (Step by Step)
    • How to Properly Move from Weebly to WordPress (Step by Step)
    • Do You Really Need a VPS? Best WordPress VPS Hosting Compared
    • How to Properly Move from Squarespace to WordPress
    • 5 Best VPN Services for WordPress Users (Compared)
    • HostGator Review - An Honest Look at Speed & Uptime (2018)
    • SiteGround Reviews from 1032 Users & Our Experts (2018)
    • Bluehost Review from Real Users + Performance Stats (2018)
    • How Much Does It Really Cost to Build a WordPress Website?
    • How to Start a Podcast with WordPress (Step by Step)
    • How to Choose the Best Domain Name (8 Tips and Tools)
    • How to Setup a Professional Email Address with Google Apps and Gmail
    • How to Install Google Analytics in WordPress for Beginners
    • How to Move WordPress to a New Host or Server With No Downtime
    • Why is WordPress Free? What are the Costs? What is the Catch?
    • How to Make a Website in 2018 – Step by Step Guide
Deals & Coupons (view all)
CSSIgniter
CSSIgniter Coupon
Get 30% off on the entire CSSIgniter Themes collection.
OIO Publisher
OIO Publisher Coupon
Get $10 off on OIO Publisher, a robust ad management plugin for WordPress.
Featured In
About WPBeginner®

WPBeginner is a free WordPress resource site for Beginners. WPBeginner was founded in July 2009 by Syed Balkhi. The main goal of this site is to provide quality tips, tricks, hacks, and other WordPress resources that allows WordPress beginners to improve their site(s).

Site Links
  • About Us
  • Contact Us
  • FTC Disclosure
  • Privacy Policy
  • Terms of Service
  • Free Blog Setup
Our Sites
  • OptinMonster
  • MonsterInsights
  • WPForms
  • List25
  • Awesome Motive
  •  

Copyright © 2009 - 2018 WPBeginner LLC. All Rights Reserved. WPBeginner® is a registered trademark.

WordPress hosting by HostGator | WordPress CDN by MaxCDN | WordPress Security by Sucuri.