Use Production URL in Shared Counts

You can modify what URL is used to find share counts, and what URL is shared when a share button is clicked.

This is useful when you’re building a website locally or in a staging environment and want to see the actual counts for the production (live) version of a post.

Add this to your theme’s functions.php file or a core functionality plugin, and change https://www.billerickson.net to your site’s URL.

/** * Production URL * @author Bill Erickson * @link http://www.billerickson.net/code/use-production-url-in-shared-counts/ * * @param string $url (optional), URL to convert to production. * @return string $url, converted to production. Uses home_url() if no url provided * */ function ea_production_url( $url = false ) { $url = $url ? esc_url( $url ) : home_url(); $production = 'https://www.billerickson.net'; $url = str_replace( home_url(), $production, $url ); return esc_url( $url ); } /** * Use Production URL for Share Count API * @author Bill Erickson * @link http://www.billerickson.net/code/use-production-url-in-shared-counts/ * * @param array $params, API parameters used when fetching share counts * @return array */ function ea_production_url_share_count_api( $params ) { $params['url'] = ea_production_url( $params['url'] ); return $params; } add_filter( 'shared_counts_api_params', 'ea_production_url_share_count_api' ); /** * Use Production URL for Share Count link * @author Bill Erickson * @link http://www.billerickson.net/code/use-production-url-in-shared-counts/ * * @param array $link, elements of the link * @return array */ function ea_production_url_share_count_link( $link ) { $exclude = array( 'print', 'email' ); if( ! in_array( $link['type'], $exclude ) ) $link['link'] = ea_production_url( $link['link'] ); return $link; } add_filter( 'shared_counts_link', 'ea_production_url_share_count_link' );

If you would like to use the “Preserve HTTP Count” feature, you can make this protocol-agnostic:

/** * Production URL * @author Bill Erickson * @link http://www.billerickson.net/code/use-production-url-in-shared-counts/ * * @param string $url (optional), URL to convert to production. * @return string $url, converted to production. Uses home_url() if no url provided * */ function ea_production_url( $url = false ) { $url = $url ? esc_url( $url ) : home_url(); // Make it protocol-agnostic, for preserving http requests $home = str_replace( array( 'http://', 'https://' ), '://', home_url() ); $production = '://www.billerickson.net'; $url = str_replace( $home, $production, $url ); return esc_url( $url ); }

Bill Erickson

Bill Erickson is a freelance WordPress developer and a contributing developer to the Genesis framework. For the past 14 years he has worked with attorneys, publishers, corporations, and non-profits, building custom websites tailored to their needs and goals.

Ready to upgrade your website?

I build custom WordPress websites that look great and are easy to manage.

Let's Talk