As of May 25th, 2021, Facebook has forced everyone to use the v10.0 Graph API (source). Unfortunately, this change affects the share counters on your website.
- Due to privacy concerns, counts returned by a GET /?id={url}/engagement request may not match raw counts.
- Requests for the GET /?id={url}/engagement field for the same URL will be limited to 10 requests per hour.
Due to privacy Facebook won’t server the correct share counters when accessed via API. If you are already using Easy Social Share Buttons for WordPress the counters are cached and safe. Your posts will show the last know share value. For the new posts, you may not see the share value coming (or come out with delay). According to our experience with customers in the last month, Facebook usually does not return share values.
Every social sharing WordPress plugin and service provider all rely on the Graph API to fetch share counts. This means everyone is in the same boat. Nobody knows yet if Facebook will provide a new way to grab this data or if the inaccuracy is perhaps just a bug. Our team sent a support ticket about this long time before the API 10 goes live for everyone (in March 2021). But the answer with a long delay was that will be (and share counters may delay in the appearance).
However, we are watching this situation very closely, and if Facebook provides a way, weโll release an update ASAP to make that work. Worst case scenario is that they donโt, but this also means every social media plugin will no longer have this data, not just us. If the worst-case scenario goes live we are also ready to introduce Facebook’s internal share counter based on button interactions. The option is available even now but with a filter callback. So if you wish to give it a try you can add the following code to your functions.php file of the theme.
add_filter('essb4_get_cached_counters', function ($counters) { $post_id = get_the_ID(); if (!empty($post_id)) { $facebook_internal = get_post_meta($post_id, 'essb_pc_facebook', true); if (!isset($counters['facebook'])) { $counters['facebook'] = 0; } if (intval($counters['facebook']) < intval($facebook_internal)) { $counters['facebook'] = intval($facebook_internal); $counters['total'] = 0; foreach ($counters as $k => $value) { if ($k != 'total') { $counters['total'] += intval($value); } } } } return $counters; });
If you have any questions about this you can contact our support team.