Announcing EA Share Count

Update!

We have relaunched this plugin as Shared Counts, available on WordPress.org and GitHub. Please use Shared Counts going forward as EA Share Count is no longer actively maintained. For more information, see the Shared Counts launch post.


Share count plugins are a requirement on most content-focused websites. They provide “social proof” that this article is worth reading. A social share requires less work than a comment, so you’ll see more interaction from your readers. And social networks can be a huge source of traffic.

You can use the buttons provided by the social services, but every time the button loads it’s an external call to that service which can slow down your site, especially if you’re showing a lot of buttons (ex: on an archive page).

EA Share Count

EA Share Count is a lean plugin for quickly retrieving, caching, and displaying various social sharing counts. It’s developer friendly and very extensible. Jared Atchison and I co-developed this plugin for use by our clients, who have been using it privately for months now.

It’s a great fit for high traffic websites. It will load faster than external buttons, look better, and can be used to sort your popular posts.

It’s already in use on Pinch of Yum, Chris Kresser, duPont Registry, and many other sites. See this list of Sites using EA Share Count for different examples of how it can be used.

You can use it with or without share counts.

easc-frontend

ea-share-count-admin

Features

  • Select from multiple styles of buttons, or make a custom style using your own CSS.
  • Can do WordPress queries based on share count, like a Popular Posts Widget.
  • Share counts are cached to minimize API calls. By default it refreshes the counts for posts published < 24 hours ago every 30 minutes, 1-5 days ago every 6 hours, and older than that it updates every 2 days. These increments can be modified.
  • The settings page lets you specify which share buttons to use and in what order. It also lets you display them before and/or after post content.
  • It works with all themes, but works especially well with Genesis and themes using Theme Hook Alliance, as it defaults to those hooks. You can reposition the share buttons by changing which hooks are used, or manually insert the share button code in the theme.
  • Includes a “Total Count” button. See the share buttons on this post as an example.
  • Includes “Email” and “Print” buttons. Email modal window and message is fully customizable with filters.
  • Tons of hooks and filters for customizations. See my code snippets for examples.
  • Automatic updates through GitHub.

Not in the .org repo

We’ve chosen not to host this on WordPress.org. While EA Share Count works great out of the box, it’s really designed for developers to customize. We won’t be providing support for this free plugin, and hosting it on .org would simply generate too many support requests.

It does receive updates. We’re using a Plugin Update Checker so that your plugin automatically checks GitHub for updates and lets you update from within WordPress. To a user, there will be no difference between updating this and any other .org hosted plugin.

plugin wordpress

Receive New Posts by Email

Comments

  1. Guys, this is awesome. And the ability to use it for a popular posts widget is genius. Appreciate you sharing this project with the world!

    Any specific reasoning behind using the drop-in Plugin Update Checker over providing support for a third-party plugin like Github Updater?

    Cheers,
    Joshua

    1. Originally we sided with the drop in updater, because it allowed us to serve updates in a very manual and controlled environment. Also with the repo being private it made sense.

      The issue I have with the GH updater is I’m not a fan of installing another plugin on my site to get updates for a plugin. I think Bill is in agreement as well.

      I understand the concept, but I think what ends up happening is you get a lot of installs that don’t actually install the GH updater plugin, therefore don’t get access to updates. Packaging it as a whole more closely mimics the .org process (but without the support and hassle :)).

      1. Jared,

        Totally makes sense, and I figured that was the logic path for that decision. I like the GH Updater, but I’ve moved away from it for similar reasons. However, I’ve kept in the two lines needed to support it, for those you choose to use it.

        I haven’t used the updater you’ve placed in this plugin, but I’m watching the repo now 😉

        Thanks again – great stuff!
        Joshua

    1. Correct, the Twitter share button will always show a zero count due to Twitter shutting down the API. That doesn’t mean clients want to drop the twitter button altogether, which is why we left it in. That’s also why we added the “Hide if zero count” option, and the “Total” option.

      At the top and bottom of this post you’ll see my share count buttons, which is the approach I tend to use on client sites. Show a total count across all services (excluding Twitter of course), then offer a bunch of options for people to share.

      1. Hi, Bill.
        Just wanted to mention alternative Twitter share counting services like newsharecounts.com or opensharecount.com. These could be an optional solution for those who really want to get tweets counted.
        Best wishes!

  2. Bill, thank you for this. Basic question (sorry): how can I display an instance of the buttons via PHP without using before/after_content in the settings?

    1. If you want to display the buttons in the order specified in the settings page (so you can use the settings page to still manage your buttons), use this:
      ea_share()->front->display();

      It also accepts two parameters:
      – Location (default is empty): This is just added as a CSS class to the wrapping div
      – Echo (default is true): Whether to echo or return the output.

      Alternatively, you can display specific buttons. For instance, let’s say you wanted to show the facebook like button. Use this:
      ea_share()->front->link( 'facebook_like' );

      See all the available parameters here.

  3. This is just what everyone needed! I actually wrote that all Facebook plugins are super slow in my latest blog post, How did you think of this idea? Thanks!

    1. I originally built it for Western Journalism since they needed a better performing share tool, and then I started using it on other client projects. Each client paid to have one or two features built based on their specific needs, and after about 5 projects the plugin was pretty feature complete.

  4. Is there a way to move a site from http -> https, and not lose your sharecounts? Even if I filter the query to do http, it looks like all new shares would register for https. I can’t imagine one would have to start manually adding up both protocol counts. Any thoughts?

  5. Hi Bill, Thanks for the great plugin! I love how light weight it is. Is it possible to disable it on specific pages if using it on pages? Thanks for your time and efforts!

    1. The simplest option would be something like this:

      if( is_page( 'about' ) )
      add_filter( 'ea_share_count_theme_locations', '__return_empty_array' );

  6. Hi Bill, first of thanks for plugin.

    When I use this plugin, it shows 10 FB shares but previously I were using Genesis share, it shows 358 FB shares…how this kind of difference is showing?

    1. Are you sure you’re checking the same URL? Maybe Genesis Simple Share was using your site url and not a specific post’s url.

      You can see the share count for any URL by visiting SharedCount.com and typing in the URL.

  7. Hi Bill,

    Thanks so much for this plugin. Works like a charm.

    I noticed you included the code for how to get the Box style like you have here on your site, but I didn’t see instructions for how to implement it. I know where the CSS goes, but where do we implement the global.js and the sharing.php?

    Thank you!

  8. Great idea Bill. Thanks for sharing.

    I’d like to have social buttons to stay in screen, like a floating bar on desktops and a sticky bar on the bottom of mobile screens, but that would probably be not that difficult to create with this plugin too. It would certainly be more efficient that Elegants theme’s Monarch plugin I’m using at the moment, or any plugin that has to probe each social network seperately on every refresh.

    I’ve read that you can select to echo or return the output of ‘ea_share()->front->display();’
    Is that because it would be more efficient to store the output of that method to a variable, in stead of calling the method several times, when showing the buttons on several positions on a page?

    The Feature to preserve non-SSL counts would be a nice addition. I have had that issue on a few websites. Then, again, when URL’s change in other ways counts are lost too, so without redirects being processed by social media there is no complete way to keep all counts when websites change.

    If one finds numbers on a website that important, one could always trick visitors by manually entering numbers, I’ve seen some plugins that allow that too. In the end, the content itself should sell the website, so I’m not that worried about it myself.

    1. In most cases I recommend using the before, after, or before/after content display options in Settings > Share Count. This way you can easily manage it from the WordPress backend, and it will still be used if you change themes.

      If you’re not using a Genesis theme or one with Theme Hook Alliance support, it will prepend/append it to ‘the_content’ filter. You can change which hooks/filters are used with a filter: https://github.com/jaredatch/EA-Share-Count/blob/master/includes/class-front.php#L52-L103

      This is the reason you can echo or return it. For hooks you echo it, for filters you return it (ex: if you’re filtering ‘the_content’ you return $share_count . $content;).

  9. Thanks, Bill, I understand what your saying. I use a genesis-based child theme, so that’s fine.

    I was thinking on the comment about the auto-updates using a separate plugin or not. I understand the reaction of Jared on that point, that is makes sure the update-function is always installed, but if many plugins would follow that reasoning it also means adding a lot of code for basically the same function.

    I see the same happening in f.i. events plugins that make the choice to add their own ticket and payment logic rather than using popular store-plugins. Using premium plugins and theme’s I now have several extra plugins running just for the update-function. Or in browsers that are reluctant to follow the same standards the same way.

    And I wonder if perhaps it would be better if someone (or rather a community) would make a good gateway that can be used to facilitate such functions for all plugins and themes that can’t or won’t use the wordpress.org repository for that function. Perhaps it will be resolved in the process of making the WordPress environment even more mature and efficient. Just a thought.

    Thanks again.

    1. I’m not sure how you would use it with a shortcode, but yes, there’s nothing in the plugin to prevent you from trying.

  10. Hello Bill,
    Sharing buttons to posts on archive pages .
    Is it possible to show the share buttons on post on archive pages like the blog page?
    Thanks for the plugin and when is it coming on the official repo?

    1. You can place the following code anywhere you’d like the share buttons to display: ea_share()->front->display();

      This plugin will not be added to the official repo.

      1. Thanks bill.
        A good example will bee handy. I’ts not short code, so how do I place it say on the home page or on the posts on the blog category pages.
        Regards.

  11. I get it now. Similar to how I did it with the old one.
    Thanks you. I hope am not asking too much but Whatsapp share is my feature request. The app is slowly becoming more relevant each day for social shares.
    Best regards!

  12. Hi Bill! I just recently started using Genesis and your website has been a huge help to me, so a super big thank you for that. I installed your share plugin and would like to know if there is any way to add Yummly to the list of social media services?

      1. That worked. Thanks!!!!

        One more question, in the settings, if I set my Share Count Number to ‘Total Only’, will my new service be included in that number? If not, is it possible to do so?

        1. Yes, it should include it. The total count function loops through all the individual share counts and adds them together, so as long as you used the ea_share_count_query_api hook to add your new service to the list you should be good.

          You might also want to try the new version under development (v1.8.1). Jared added a new filter so you can modify the list of services BEFORE the built-in API queries run. This allows you to replace an existing service with a different source, like using SharedCount for all the services.

          We also added in Twitter support using New Share Counts.com

          1. Hi Bill, Thanks again for the reply!

            Sorry I am utter pants when it comes to coding. I just copied the code from the Reddit example and replaced the variables in order to add my new service. Looking at that, it doesn’t seem to use the ea_share_count_query_api hook.

            Could you point me to an example of how to implement it?

            Side note, I updated to v1.8.1.

          2. The Reddit code you copied simply adds a sharing button. It didn’t pull in share counts.

            I’ve never used Yummly before but it looks like their api costs $500/month to access. But they might have a free version for accessing share counts only, I just don’t know. I recommend you reach out to them and ask how to access share counts.

            At the bottom of this page you can see an example of pulling share counts from an API (SharedCount in this example)

  13. Thanks Bill and Jared.

    I don’t have any question. Just wanted to thank you Bill for being such an awesome person. I am not a developer or coder by any means (more of a marketer) but I like to get my hands dirty and learn whatever I can. And since I started using Genesis a while ago, I have learned so much from you and this blog.

    Just wanted to thank you for that and how generous you are with your time and knowledge. From all that I have seen and read about you, you are an extremely good coder, so I know your time is worth a lot, but it amazes me how much time you take to share what you know with the community and answer specific questions on this and other posts.

    So thank you.

  14. Hello! I really like this plugin.

    However, I’d like to change the ‘Comment’ and ‘Comments’ to my language and have them displayed inside a bracket, so it shows like this:

    (3 Facebook Comments)

    I can’t get the first opening bracket to work anywhere I tried to put it.
    Any thoughts?

    Please let me know.
    Thanks!

  15. Hello Bill, do you think that with this customizable plugin you can recover lost social share (fb, G +) by switching from http to https?

Leave a comment