Version Description
- Solved facebook page follower count issue for pages transitioned to new page experience.
Download this release
Release Info
Developer | Access Keys |
Plugin | Social Counter for WordPress – AccessPress Social Counter |
Version | 1.9.1 |
Comparing to | |
See all releases |
Code changes from version 1.9.0 to 1.9.1
- accesspress-social-counter.php +467 -444
- inc/frontend/social_network/extract_count/facebook.php +22 -47
- readme.txt +406 -403
accesspress-social-counter.php
CHANGED
@@ -1,444 +1,467 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
defined( 'ABSPATH' ) or die( "No script kiddies please!" );
|
4 |
-
|
5 |
-
/**
|
6 |
-
* Plugin Name: AccessPress Social Counter
|
7 |
-
* Plugin URI: https://accesspressthemes.com/wordpress-plugins/accesspress-social-counter/
|
8 |
-
* Description: A plugin to display your social accounts fans, subscribers and followers number on your website with handful of backend settings and interface.
|
9 |
-
* Version: 1.9.
|
10 |
-
* Author: AccessPress Themes
|
11 |
-
* Author URI: http://accesspressthemes.com
|
12 |
-
* Text Domain: aps-counter
|
13 |
-
* Domain Path: /languages/
|
14 |
-
* Network: false
|
15 |
-
* License: GPL2
|
16 |
-
*/
|
17 |
-
|
18 |
-
|
19 |
-
if ( ! defined( 'SC_IMAGE_DIR' ) ) {
|
20 |
-
define( 'SC_IMAGE_DIR', plugin_dir_url( __FILE__ ) . 'images' );
|
21 |
-
}
|
22 |
-
|
23 |
-
if ( ! defined( 'SC_JS_DIR' ) ) {
|
24 |
-
define( 'SC_JS_DIR', plugin_dir_url( __FILE__ ) . 'js' );
|
25 |
-
}
|
26 |
-
|
27 |
-
if ( ! defined( 'SC_CSS_DIR' ) ) {
|
28 |
-
define( 'SC_CSS_DIR', plugin_dir_url( __FILE__ ) . 'css' );
|
29 |
-
}
|
30 |
-
|
31 |
-
if ( ! defined( 'SC_VERSION' ) ) {
|
32 |
-
define( 'SC_VERSION', '1.9.
|
33 |
-
}
|
34 |
-
|
35 |
-
if ( ! defined( 'SC_PATH' ) ) {
|
36 |
-
define( 'SC_PATH', plugin_dir_path( __FILE__ ) );
|
37 |
-
}
|
38 |
-
|
39 |
-
defined('APSC_LITE_PLUGIN_NAME') or define('APSC_LITE_PLUGIN_NAME', 'AccessPress Social Counter');
|
40 |
-
defined('APSC_LITE_DEMO') or define('APSC_LITE_DEMO', 'http://demo.accesspressthemes.com/wordpress-plugins/accesspress-social-counter');
|
41 |
-
defined('APSC_LITE_DOC') or define('APSC_LITE_DOC', 'https://accesspressthemes.com/documentation/accesspress-social-counter/');
|
42 |
-
defined('APSC_LITE_DETAIL') or define('APSC_LITE_DETAIL', 'https://accesspressthemes.com/wordpress-plugins/accesspress-social-counter/');
|
43 |
-
defined('APSC_LITE_RATING') or define('APSC_LITE_RATING', 'https://wordpress.org/support/plugin/accesspress-social-counter/reviews/#new-post');
|
44 |
-
|
45 |
-
defined('APSC_PRO_PLUGIN_NAME') or define('APSC_PRO_PLUGIN_NAME', 'AccessPress Social Pro');
|
46 |
-
defined('APSC_PRO_LINK') or define('APSC_PRO_LINK','https://accesspressthemes.com/wordpress-plugins/accesspress-social-pro/');
|
47 |
-
defined('APSC_PRO_DEMO') or define('APSC_PRO_DEMO', 'http://demo.accesspressthemes.com/wordpress-plugins/accesspress-social-pro');
|
48 |
-
defined('APSC_PRO_DETAIL') or define('APSC_PRO_DETAIL', 'https://accesspressthemes.com/wordpress-plugins/accesspress-social-pro/');
|
49 |
-
|
50 |
-
|
51 |
-
/**
|
52 |
-
* Register of widgets
|
53 |
-
* */
|
54 |
-
include_once('inc/backend/widget.php');
|
55 |
-
if ( ! class_exists( 'SC_Class' ) ) {
|
56 |
-
|
57 |
-
class SC_Class{
|
58 |
-
|
59 |
-
var $apsc_settings;
|
60 |
-
|
61 |
-
function __construct(){
|
62 |
-
$this -> apsc_settings = get_option( 'apsc_settings' );
|
63 |
-
register_activation_hook( __FILE__, array( $this, 'load_default_settings' ) ); //loads default settings for the plugin while activating the plugin
|
64 |
-
add_action( 'init', array( $this, 'plugin_text_domain' ) ); //loads text domain for translation ready
|
65 |
-
add_action( 'admin_menu', array( $this, 'add_sc_menu' ) ); //adds plugin menu in wp-admin
|
66 |
-
add_action( 'admin_enqueue_scripts', array( $this, 'register_admin_assets' ) ); //registers admin assests such as js and css
|
67 |
-
add_action( 'wp_enqueue_scripts', array( $this, 'register_frontend_assets' ) ); //registers js and css for frontend
|
68 |
-
add_action( 'admin_post_apsc_settings_action', array( $this, 'apsc_settings_action' ) ); //recieves the posted values from settings form
|
69 |
-
add_action( 'admin_post_apsc_restore_default', array( $this, 'apsc_restore_default' ) ); //restores default settings;
|
70 |
-
add_action( 'widgets_init', array( $this, 'register_apsc_widget' ) ); //registers the widget
|
71 |
-
add_shortcode( 'aps-counter', array( $this, 'apsc_shortcode' ) ); //adds a shortcode
|
72 |
-
add_shortcode( 'aps-get-count', array( $this, 'apsc_count_shortcode' ) ); //
|
73 |
-
add_action( 'admin_post_apsc_delete_cache', array( $this, 'apsc_delete_cache' ) ); //deletes the counter values from cache
|
74 |
-
|
75 |
-
add_filter( 'plugin_row_meta', array( $this, 'apsc_plugin_row_meta' ), 10, 2 );
|
76 |
-
add_filter( 'admin_footer_text', array( $this, 'apsc_admin_footer_text' ) );
|
77 |
-
add_action( 'admin_init', array( $this, 'redirect_to_site' ), 1 );
|
78 |
-
|
79 |
-
}
|
80 |
-
|
81 |
-
function redirect_to_site(){
|
82 |
-
if ( isset( $_GET[ 'page' ] ) && $_GET[ 'page' ] == 'apsc-documentation' ) {
|
83 |
-
wp_redirect( APSC_LITE_DOC );
|
84 |
-
exit();
|
85 |
-
}
|
86 |
-
|
87 |
-
if ( isset( $_GET[ 'page' ] ) && $_GET[ 'page' ] == 'apsc-premium' ) {
|
88 |
-
wp_redirect( APSC_PRO_LINK );
|
89 |
-
exit();
|
90 |
-
}
|
91 |
-
}
|
92 |
-
|
93 |
-
function apsc_plugin_row_meta( $links, $file ){
|
94 |
-
if ( strpos( $file, 'accesspress-social-counter.php' ) !== false ) {
|
95 |
-
$new_links = array(
|
96 |
-
'demo' => '<a href="'.APSC_LITE_DEMO.'" target="_blank"><span class="dashicons dashicons-welcome-view-site"></span>Live Demo</a>',
|
97 |
-
'doc' => '<a href="'.APSC_LITE_DOC.'" target="_blank"><span class="dashicons dashicons-media-document"></span>Documentation</a>',
|
98 |
-
'support' => '<a href="http://accesspressthemes.com/support" target="_blank"><span class="dashicons dashicons-admin-users"></span>Support</a>',
|
99 |
-
'pro' => '<a href="'.APSC_PRO_LINK.'" target="_blank"><span class="dashicons dashicons-cart"></span>Premium version</a>'
|
100 |
-
);
|
101 |
-
$links = array_merge( $links, $new_links );
|
102 |
-
}
|
103 |
-
return $links;
|
104 |
-
}
|
105 |
-
|
106 |
-
function apsc_admin_footer_text( $text ){
|
107 |
-
global $post;
|
108 |
-
if ( isset($_GET['page']) && $_GET['page'] === 'ap-social-counter') {
|
109 |
-
$text = 'Enjoyed ' . APSC_LITE_PLUGIN_NAME . '? <a href="' . APSC_LITE_RATING . '" target="_blank">Please leave us a ★★★★★ rating</a> We really appreciate your support! | Try premium version <a href="' . APSC_PRO_LINK . '" target="_blank">' . APSC_PRO_PLUGIN_NAME . '</a> - more features, more power!';
|
110 |
-
return $text;
|
111 |
-
} else {
|
112 |
-
return $text;
|
113 |
-
|
114 |
-
}
|
115 |
-
}
|
116 |
-
|
117 |
-
function plugin_text_domain(){
|
118 |
-
load_plugin_textdomain( 'accesspress-social-counter', false, basename( dirname( __FILE__ ) ) . '/languages/' );
|
119 |
-
}
|
120 |
-
|
121 |
-
function load_default_settings(){
|
122 |
-
if ( ! get_option( 'apsc_settings' ) ) {
|
123 |
-
$apsc_settings = $this -> get_default_settings();
|
124 |
-
update_option( 'apsc_settings', $apsc_settings );
|
125 |
-
}
|
126 |
-
}
|
127 |
-
|
128 |
-
|
129 |
-
function add_sc_menu(){
|
130 |
-
add_menu_page( __( 'AccessPress Social Counter', 'accesspress-social-counter' ), __( 'AccessPress Social Counter', 'accesspress-social-counter' ), 'manage_options', 'ap-social-counter', array( $this, 'sc_settings' ), SC_IMAGE_DIR . '/sc-icon.png' );
|
131 |
-
|
132 |
-
add_submenu_page('ap-social-counter', __('Documentation', 'accesspress-social-counter'), __('Documentation', 'accesspress-social-counter'), 'manage_options', 'apsc-documentation', '__return_false', null, 9);
|
133 |
-
add_submenu_page('ap-social-counter', __('Check Premium Version', 'accesspress-social-counter'), __('Check Premium Version', 'accesspress-social-counter'), 'manage_options', 'apsc-premium', '__return_false', null, 9);
|
134 |
-
}
|
135 |
-
|
136 |
-
function sc_settings(){
|
137 |
-
include('inc/backend/settings.php');
|
138 |
-
}
|
139 |
-
|
140 |
-
function register_admin_assets(){
|
141 |
-
if ( isset( $_GET[ 'page' ] ) && $_GET[ 'page' ] == 'ap-social-counter' ) {
|
142 |
-
wp_enqueue_style( 'sc-admin-css', SC_CSS_DIR . '/backend.css', array(), SC_VERSION );
|
143 |
-
wp_enqueue_script( 'sc-admin-js', SC_JS_DIR . '/backend.js', array( 'jquery', 'jquery-ui-sortable' ), SC_VERSION );
|
144 |
-
wp_enqueue_script( 'sc-wpac-time-js', SC_JS_DIR . '/wpac-time.js', array( 'jquery' ), SC_VERSION ); // Third Party API for Facebook followers count
|
145 |
-
wp_enqueue_script( 'sc-wpac-js', SC_JS_DIR . '/wpac.js', array( 'jquery' ), SC_VERSION ); // Third Party API for Facebook followers count
|
146 |
-
}
|
147 |
-
wp_enqueue_style( 'fontawesome-css', SC_CSS_DIR . '/font-awesome.min.css', false, SC_VERSION );
|
148 |
-
}
|
149 |
-
|
150 |
-
function register_frontend_assets(){
|
151 |
-
$apsc_settings = $this -> apsc_settings;
|
152 |
-
$enable_font_css = (isset( $apsc_settings[ 'disable_font_css' ] ) && $apsc_settings[ 'disable_font_css' ] == 0) ? true : false;
|
153 |
-
$enable_frontend_css = (isset( $apsc_settings[ 'disable_frontend_css' ] ) && $apsc_settings[ 'disable_frontend_css' ] == 0) ? true : false;
|
154 |
-
if ( $enable_font_css ) {
|
155 |
-
if ( isset( $apsc_settings[ 'font_awesome_version' ]) && $apsc_settings[ 'font_awesome_version' ] == 'apsc-font-awesome-four' ) {
|
156 |
-
wp_enqueue_style( 'fontawesome-four-css', SC_CSS_DIR . '/font-awesome.min.css', false, SC_VERSION );
|
157 |
-
}
|
158 |
-
else{
|
159 |
-
wp_enqueue_style( 'fontawesome-five-css', SC_CSS_DIR . '/fontawesome-all.css', false, SC_VERSION );
|
160 |
-
}
|
161 |
-
}
|
162 |
-
if ( $enable_frontend_css ) {
|
163 |
-
wp_enqueue_style( 'apsc-frontend-css', SC_CSS_DIR . '/frontend.css', array(), SC_VERSION );
|
164 |
-
}
|
165 |
-
}
|
166 |
-
|
167 |
-
function apsc_settings_action(){
|
168 |
-
if ( ! empty( $_POST ) && wp_verify_nonce( $_POST[ 'apsc_settings_nonce' ], 'apsc_settings_action' ) ) {
|
169 |
-
include('inc/backend/save-settings.php');
|
170 |
-
}
|
171 |
-
}
|
172 |
-
|
173 |
-
function print_array( $array ){
|
174 |
-
echo "<pre>";
|
175 |
-
print_r( $array );
|
176 |
-
echo "</pre>";
|
177 |
-
}
|
178 |
-
|
179 |
-
function apsc_restore_default(){
|
180 |
-
if ( ! empty( $_GET ) && wp_verify_nonce( $_GET[ '_wpnonce' ], 'apsc-restore-default-nonce' ) ) {
|
181 |
-
$apsc_settings = $this -> get_default_settings();
|
182 |
-
update_option( 'apsc_settings', $apsc_settings );
|
183 |
-
$_SESSION[ 'apsc_message' ] = __( 'Default Settings Restored Successfully', 'accesspress-social-counter' );
|
184 |
-
wp_redirect( admin_url() . 'admin.php?page=ap-social-counter' );
|
185 |
-
}
|
186 |
-
}
|
187 |
-
|
188 |
-
function get_default_settings(){
|
189 |
-
$apsc_settings = array( 'social_profile' => array( 'facebook' => array( 'page_id' => '' ),
|
190 |
-
'twitter' => array( 'username' => '', 'consumer_key' => '',
|
191 |
-
'consumer_secret' => '',
|
192 |
-
'access_token' => '',
|
193 |
-
'access_token_secret' => '' ),
|
194 |
-
'instagram' => array('app_id' => '',
|
195 |
-
'app_secret' => '',
|
196 |
-
'username' => '',
|
197 |
-
'access_token' => '',
|
198 |
-
'user_id' => '' ),
|
199 |
-
'youtube' => array( 'username' => '',
|
200 |
-
'channel_url' => '' ),
|
201 |
-
'soundcloud' => array( 'username' => '',
|
202 |
-
'client_id' => '' ),
|
203 |
-
'dribbble' => array( 'client_id' => '',
|
204 |
-
'client_secret' => '',
|
205 |
-
'username' => '',
|
206 |
-
'access_token' => ''),
|
207 |
-
),
|
208 |
-
'profile_order' => array( 'facebook', 'twitter', 'instagram', 'youtube', 'soundcloud', 'dribbble', 'posts', 'comments' ),
|
209 |
-
'social_profile_theme' => 'theme-1',
|
210 |
-
'counter_format' => 'comma',
|
211 |
-
'font_awesome_version' => 'apsc-font-awesome-five',
|
212 |
-
'cache_period' => '',
|
213 |
-
'disable_font_css' => 0,
|
214 |
-
'disable_frontend_css' => 0
|
215 |
-
);
|
216 |
-
return $apsc_settings;
|
217 |
-
}
|
218 |
-
|
219 |
-
function register_apsc_widget(){
|
220 |
-
register_widget( 'APSC_Widget' );
|
221 |
-
}
|
222 |
-
|
223 |
-
function apsc_shortcode( $atts ){
|
224 |
-
ob_start();
|
225 |
-
include('inc/frontend/shortcode.php');
|
226 |
-
$html = ob_get_contents();
|
227 |
-
ob_get_clean();
|
228 |
-
return $html;
|
229 |
-
}
|
230 |
-
|
231 |
-
function apsc_delete_cache(){
|
232 |
-
if ( ! empty( $_GET ) && wp_verify_nonce( $_GET[ '_wpnonce' ], 'apsc-cache-nonce' ) ) {
|
233 |
-
$transient_array = array( 'apsc_facebook', 'apsc_twitter', 'apsc_youtube', 'apsc_instagram','apsc_soundcloud', 'apsc_dribbble', 'apsc_posts', 'apsc_comments' );
|
234 |
-
foreach ( $transient_array as $transient ) {
|
235 |
-
delete_transient( $transient );
|
236 |
-
}
|
237 |
-
$_SESSION[ 'apsc_message' ] = __( 'Cache Deleted Successfully', 'accesspress-social-counter' );
|
238 |
-
wp_redirect( admin_url() . 'admin.php?page=ap-social-counter' );
|
239 |
-
}
|
240 |
-
}
|
241 |
-
|
242 |
-
function authorization( $user, $consumer_key, $consumer_secret, $oauth_access_token, $oauth_access_token_secret ){
|
243 |
-
$query = 'screen_name=' . $user;
|
244 |
-
$signature = $this -> signature( $query, $consumer_key, $consumer_secret, $oauth_access_token, $oauth_access_token_secret );
|
245 |
-
return $this -> header( $signature );
|
246 |
-
}
|
247 |
-
|
248 |
-
function signature_base_string( $url, $query, $method, $params ){
|
249 |
-
$return = array();
|
250 |
-
ksort( $params );
|
251 |
-
|
252 |
-
foreach ( $params as $key => $value ) {
|
253 |
-
$return[] = $key . '=' . $value;
|
254 |
-
}
|
255 |
-
|
256 |
-
return $method . "&" . rawurlencode( $url ) . '&' . rawurlencode( implode( '&', $return ) ) . '%26' . rawurlencode( $query );
|
257 |
-
}
|
258 |
-
|
259 |
-
function signature( $query, $consumer_key, $consumer_secret, $oauth_access_token, $oauth_access_token_secret ){
|
260 |
-
$oauth = array(
|
261 |
-
'oauth_consumer_key' => $consumer_key,
|
262 |
-
'oauth_nonce' => hash_hmac( 'sha1', time(), true ),
|
263 |
-
'oauth_signature_method' => 'HMAC-SHA1',
|
264 |
-
'oauth_token' => $oauth_access_token,
|
265 |
-
'oauth_timestamp' => time(),
|
266 |
-
'oauth_version' => '1.0'
|
267 |
-
);
|
268 |
-
$api_url = 'https://api.twitter.com/1.1/users/show.json';
|
269 |
-
$base_info = $this -> signature_base_string( $api_url, $query, 'GET', $oauth );
|
270 |
-
$composite_key = rawurlencode( $consumer_secret ) . '&' . rawurlencode( $oauth_access_token_secret );
|
271 |
-
$oauth_signature = base64_encode( hash_hmac( 'sha1', $base_info, $composite_key, true ) );
|
272 |
-
$oauth[ 'oauth_signature' ] = $oauth_signature;
|
273 |
-
return $oauth;
|
274 |
-
}
|
275 |
-
|
276 |
-
public function header( $signature ){
|
277 |
-
$return = 'OAuth ';
|
278 |
-
$values = array();
|
279 |
-
|
280 |
-
foreach ( $signature as $key => $value ) {
|
281 |
-
$values[] = $key . '="' . rawurlencode( $value ) . '"';
|
282 |
-
}
|
283 |
-
|
284 |
-
$return .= implode( ', ', $values );
|
285 |
-
|
286 |
-
return $return;
|
287 |
-
}
|
288 |
-
|
289 |
-
|
290 |
-
function get_twitter_count(){
|
291 |
-
$apsc_settings = $this -> apsc_settings;
|
292 |
-
$user = $apsc_settings[ 'social_profile' ][ 'twitter' ][ 'username' ];
|
293 |
-
$api_url = 'https://api.twitter.com/1.1/users/show.json';
|
294 |
-
$params = array(
|
295 |
-
'method' => 'GET',
|
296 |
-
'sslverify' => false,
|
297 |
-
'timeout' => 60,
|
298 |
-
'headers' => array(
|
299 |
-
'Content-Type' => 'application/x-www-form-urlencoded',
|
300 |
-
'Authorization' => $this -> authorization(
|
301 |
-
$user, $apsc_settings[ 'social_profile' ][ 'twitter' ][ 'consumer_key' ], $apsc_settings[ 'social_profile' ][ 'twitter' ][ 'consumer_secret' ], $apsc_settings[ 'social_profile' ][ 'twitter' ][ 'access_token' ], $apsc_settings[ 'social_profile' ][ 'twitter' ][ 'access_token_secret' ]
|
302 |
-
)
|
303 |
-
)
|
304 |
-
);
|
305 |
-
|
306 |
-
$connection = wp_remote_get( $api_url . '?screen_name=' . $user, $params );
|
307 |
-
if ( is_wp_error( $connection ) ) {
|
308 |
-
$count = 0;
|
309 |
-
} else {
|
310 |
-
$_data = json_decode( $connection[ 'body' ], true );
|
311 |
-
if ( isset( $_data[ 'followers_count' ] ) ) {
|
312 |
-
$count = intval( $_data[ 'followers_count' ] );
|
313 |
-
} else {
|
314 |
-
$count = 0;
|
315 |
-
}
|
316 |
-
}
|
317 |
-
return $count;
|
318 |
-
}
|
319 |
-
|
320 |
-
function get_formatted_count( $count, $format ){
|
321 |
-
if ( $count == '' ) {
|
322 |
-
return '';
|
323 |
-
}
|
324 |
-
switch ( $format ) {
|
325 |
-
case 'comma':
|
326 |
-
$count = number_format( $count );
|
327 |
-
break;
|
328 |
-
case 'short':
|
329 |
-
$count = $this -> abreviateTotalCount( $count );
|
330 |
-
break;
|
331 |
-
default:
|
332 |
-
break;
|
333 |
-
}
|
334 |
-
return $count;
|
335 |
-
}
|
336 |
-
|
337 |
-
function abreviateTotalCount( $value ){
|
338 |
-
|
339 |
-
$abbreviations = array( 12 => 'T', 9 => 'B', 6 => 'M', 3 => 'K', 0 => '' );
|
340 |
-
|
341 |
-
foreach ( $abbreviations as $exponent => $abbreviation ) {
|
342 |
-
|
343 |
-
if ( $value >= pow( 10, $exponent ) ) {
|
344 |
-
return round( floatval( $value / pow( 10, $exponent ) ), 1 ) . $abbreviation;
|
345 |
-
}
|
346 |
-
}
|
347 |
-
}
|
348 |
-
|
349 |
-
function facebook_count( $url ){
|
350 |
-
|
351 |
-
$fql = "SELECT like_count ";
|
352 |
-
$fql .= " FROM link_stat WHERE url = '$url'";
|
353 |
-
|
354 |
-
$fqlURL = "https://api.facebook.com/method/fql.query?format=json&query=" . urlencode( $fql );
|
355 |
-
|
356 |
-
$response = wp_remote_get( $fqlURL );
|
357 |
-
|
358 |
-
if ( ! is_wp_error( $response ) ) {
|
359 |
-
$response = json_decode( $response[ 'body' ] );
|
360 |
-
if ( is_array( $response ) && isset( $response[ 0 ] -> like_count ) ) {
|
361 |
-
return $response[ 0 ] -> like_count;
|
362 |
-
} else {
|
363 |
-
$count = '0';
|
364 |
-
return $count;
|
365 |
-
}
|
366 |
-
}else{
|
367 |
-
$count = '0';
|
368 |
-
return $count;
|
369 |
-
}
|
370 |
-
}
|
371 |
-
|
372 |
-
function get_count( $social_media ){
|
373 |
-
include('inc/frontend/api.php');
|
374 |
-
return $count;
|
375 |
-
}
|
376 |
-
|
377 |
-
function apsc_count_shortcode( $atts ){
|
378 |
-
if ( isset( $atts[ 'social_media' ] ) ) {
|
379 |
-
$count = $this -> get_count( $atts[ 'social_media' ] );
|
380 |
-
if ( isset( $atts[ 'count_format' ] ) && $count != '' ) {
|
381 |
-
$count = $this -> get_formatted_count( $count, $atts[ 'count_format' ] );
|
382 |
-
}
|
383 |
-
return $count;
|
384 |
-
}
|
385 |
-
}
|
386 |
-
|
387 |
-
function get_fb_access_token(){
|
388 |
-
$apsc_settings = $this -> apsc_settings;
|
389 |
-
$api_url = 'https://graph.facebook.com/';
|
390 |
-
$url = sprintf(
|
391 |
-
'%soauth/access_token?client_id=%s&client_secret=%s&grant_type=client_credentials', $api_url, $apsc_settings[ 'social_profile' ][ 'facebook' ][ 'app_id' ], $apsc_settings[ 'social_profile' ][ 'facebook' ][ 'app_secret' ]
|
392 |
-
);
|
393 |
-
$access_token = wp_remote_get( $url, array( 'timeout' => 60 ) );
|
394 |
-
|
395 |
-
if ( is_wp_error( $access_token ) || ( isset( $access_token[ 'response' ][ 'code' ] ) && 200 != $access_token[ 'response' ][ 'code' ] ) ) {
|
396 |
-
return '';
|
397 |
-
} else {
|
398 |
-
return sanitize_text_field( $access_token[ 'body' ] );
|
399 |
-
}
|
400 |
-
}
|
401 |
-
|
402 |
-
function new_fb_count(){
|
403 |
-
$apsc_settings = $this -> apsc_settings;
|
404 |
-
$facebook_method = ( isset( $apsc_settings[ 'social_profile' ][ 'facebook' ][ 'method' ] ) && $apsc_settings[ 'social_profile' ][ 'facebook' ][ 'method' ] != '' ) ? $apsc_settings[ 'social_profile' ][ 'facebook' ][ 'method' ] : '2';
|
405 |
-
if ( $facebook_method == '1' ) {
|
406 |
-
$access_token = $this -> get_fb_access_token();
|
407 |
-
$access_token = json_decode( $access_token );
|
408 |
-
$access_token = $access_token -> access_token;
|
409 |
-
$api_url = 'https://graph.facebook.com/v3.0/'; //not working
|
410 |
-
//$api_url = 'https://graph.facebook.com/v2.8/'; // not working
|
411 |
-
//$api_url = 'https://graph.facebook.com/v3.2/'; // not working
|
412 |
-
$url = sprintf(
|
413 |
-
'%s%s?fields=fan_count&access_token=%s', $api_url, $apsc_settings[ 'social_profile' ][ 'facebook' ][ 'page_id' ], $access_token
|
414 |
-
);
|
415 |
-
} else {
|
416 |
-
$fb_page_id = (isset( $apsc_settings[ 'social_profile' ][ 'facebook' ][ 'fb_page_id' ] ) && ! empty( $apsc_settings[ 'social_profile' ][ 'facebook' ][ 'fb_page_id' ] )) ? $apsc_settings[ 'social_profile' ][ 'facebook' ][ 'fb_page_id' ] : ' ';
|
417 |
-
$fb_access_token = (isset( $apsc_settings[ 'social_profile' ][ 'facebook' ][ 'access_token' ] ) && ! empty( $apsc_settings[ 'social_profile' ][ 'facebook' ][ 'access_token' ] )) ? $apsc_settings[ 'social_profile' ][ 'facebook' ][ 'access_token' ] : ' ';
|
418 |
-
|
419 |
-
if ( $fb_access_token != '' && $fb_page_id != '' ) {
|
420 |
-
$api_url = 'https://graph.facebook.com/';
|
421 |
-
|
422 |
-
|
423 |
-
|
424 |
-
|
425 |
-
|
426 |
-
|
427 |
-
|
428 |
-
|
429 |
-
|
430 |
-
|
431 |
-
|
432 |
-
|
433 |
-
|
434 |
-
|
435 |
-
|
436 |
-
|
437 |
-
|
438 |
-
|
439 |
-
|
440 |
-
|
441 |
-
|
442 |
-
|
443 |
-
|
444 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
defined( 'ABSPATH' ) or die( "No script kiddies please!" );
|
4 |
+
|
5 |
+
/**
|
6 |
+
* Plugin Name: AccessPress Social Counter
|
7 |
+
* Plugin URI: https://accesspressthemes.com/wordpress-plugins/accesspress-social-counter/
|
8 |
+
* Description: A plugin to display your social accounts fans, subscribers and followers number on your website with handful of backend settings and interface.
|
9 |
+
* Version: 1.9.1
|
10 |
+
* Author: AccessPress Themes
|
11 |
+
* Author URI: http://accesspressthemes.com
|
12 |
+
* Text Domain: aps-counter
|
13 |
+
* Domain Path: /languages/
|
14 |
+
* Network: false
|
15 |
+
* License: GPL2
|
16 |
+
*/
|
17 |
+
|
18 |
+
|
19 |
+
if ( ! defined( 'SC_IMAGE_DIR' ) ) {
|
20 |
+
define( 'SC_IMAGE_DIR', plugin_dir_url( __FILE__ ) . 'images' );
|
21 |
+
}
|
22 |
+
|
23 |
+
if ( ! defined( 'SC_JS_DIR' ) ) {
|
24 |
+
define( 'SC_JS_DIR', plugin_dir_url( __FILE__ ) . 'js' );
|
25 |
+
}
|
26 |
+
|
27 |
+
if ( ! defined( 'SC_CSS_DIR' ) ) {
|
28 |
+
define( 'SC_CSS_DIR', plugin_dir_url( __FILE__ ) . 'css' );
|
29 |
+
}
|
30 |
+
|
31 |
+
if ( ! defined( 'SC_VERSION' ) ) {
|
32 |
+
define( 'SC_VERSION', '1.9.1' );
|
33 |
+
}
|
34 |
+
|
35 |
+
if ( ! defined( 'SC_PATH' ) ) {
|
36 |
+
define( 'SC_PATH', plugin_dir_path( __FILE__ ) );
|
37 |
+
}
|
38 |
+
|
39 |
+
defined('APSC_LITE_PLUGIN_NAME') or define('APSC_LITE_PLUGIN_NAME', 'AccessPress Social Counter');
|
40 |
+
defined('APSC_LITE_DEMO') or define('APSC_LITE_DEMO', 'http://demo.accesspressthemes.com/wordpress-plugins/accesspress-social-counter');
|
41 |
+
defined('APSC_LITE_DOC') or define('APSC_LITE_DOC', 'https://accesspressthemes.com/documentation/accesspress-social-counter/');
|
42 |
+
defined('APSC_LITE_DETAIL') or define('APSC_LITE_DETAIL', 'https://accesspressthemes.com/wordpress-plugins/accesspress-social-counter/');
|
43 |
+
defined('APSC_LITE_RATING') or define('APSC_LITE_RATING', 'https://wordpress.org/support/plugin/accesspress-social-counter/reviews/#new-post');
|
44 |
+
|
45 |
+
defined('APSC_PRO_PLUGIN_NAME') or define('APSC_PRO_PLUGIN_NAME', 'AccessPress Social Pro');
|
46 |
+
defined('APSC_PRO_LINK') or define('APSC_PRO_LINK','https://accesspressthemes.com/wordpress-plugins/accesspress-social-pro/');
|
47 |
+
defined('APSC_PRO_DEMO') or define('APSC_PRO_DEMO', 'http://demo.accesspressthemes.com/wordpress-plugins/accesspress-social-pro');
|
48 |
+
defined('APSC_PRO_DETAIL') or define('APSC_PRO_DETAIL', 'https://accesspressthemes.com/wordpress-plugins/accesspress-social-pro/');
|
49 |
+
|
50 |
+
|
51 |
+
/**
|
52 |
+
* Register of widgets
|
53 |
+
* */
|
54 |
+
include_once('inc/backend/widget.php');
|
55 |
+
if ( ! class_exists( 'SC_Class' ) ) {
|
56 |
+
|
57 |
+
class SC_Class{
|
58 |
+
|
59 |
+
var $apsc_settings;
|
60 |
+
|
61 |
+
function __construct(){
|
62 |
+
$this -> apsc_settings = get_option( 'apsc_settings' );
|
63 |
+
register_activation_hook( __FILE__, array( $this, 'load_default_settings' ) ); //loads default settings for the plugin while activating the plugin
|
64 |
+
add_action( 'init', array( $this, 'plugin_text_domain' ) ); //loads text domain for translation ready
|
65 |
+
add_action( 'admin_menu', array( $this, 'add_sc_menu' ) ); //adds plugin menu in wp-admin
|
66 |
+
add_action( 'admin_enqueue_scripts', array( $this, 'register_admin_assets' ) ); //registers admin assests such as js and css
|
67 |
+
add_action( 'wp_enqueue_scripts', array( $this, 'register_frontend_assets' ) ); //registers js and css for frontend
|
68 |
+
add_action( 'admin_post_apsc_settings_action', array( $this, 'apsc_settings_action' ) ); //recieves the posted values from settings form
|
69 |
+
add_action( 'admin_post_apsc_restore_default', array( $this, 'apsc_restore_default' ) ); //restores default settings;
|
70 |
+
add_action( 'widgets_init', array( $this, 'register_apsc_widget' ) ); //registers the widget
|
71 |
+
add_shortcode( 'aps-counter', array( $this, 'apsc_shortcode' ) ); //adds a shortcode
|
72 |
+
add_shortcode( 'aps-get-count', array( $this, 'apsc_count_shortcode' ) ); //
|
73 |
+
add_action( 'admin_post_apsc_delete_cache', array( $this, 'apsc_delete_cache' ) ); //deletes the counter values from cache
|
74 |
+
|
75 |
+
add_filter( 'plugin_row_meta', array( $this, 'apsc_plugin_row_meta' ), 10, 2 );
|
76 |
+
add_filter( 'admin_footer_text', array( $this, 'apsc_admin_footer_text' ) );
|
77 |
+
add_action( 'admin_init', array( $this, 'redirect_to_site' ), 1 );
|
78 |
+
|
79 |
+
}
|
80 |
+
|
81 |
+
function redirect_to_site(){
|
82 |
+
if ( isset( $_GET[ 'page' ] ) && $_GET[ 'page' ] == 'apsc-documentation' ) {
|
83 |
+
wp_redirect( APSC_LITE_DOC );
|
84 |
+
exit();
|
85 |
+
}
|
86 |
+
|
87 |
+
if ( isset( $_GET[ 'page' ] ) && $_GET[ 'page' ] == 'apsc-premium' ) {
|
88 |
+
wp_redirect( APSC_PRO_LINK );
|
89 |
+
exit();
|
90 |
+
}
|
91 |
+
}
|
92 |
+
|
93 |
+
function apsc_plugin_row_meta( $links, $file ){
|
94 |
+
if ( strpos( $file, 'accesspress-social-counter.php' ) !== false ) {
|
95 |
+
$new_links = array(
|
96 |
+
'demo' => '<a href="'.APSC_LITE_DEMO.'" target="_blank"><span class="dashicons dashicons-welcome-view-site"></span>Live Demo</a>',
|
97 |
+
'doc' => '<a href="'.APSC_LITE_DOC.'" target="_blank"><span class="dashicons dashicons-media-document"></span>Documentation</a>',
|
98 |
+
'support' => '<a href="http://accesspressthemes.com/support" target="_blank"><span class="dashicons dashicons-admin-users"></span>Support</a>',
|
99 |
+
'pro' => '<a href="'.APSC_PRO_LINK.'" target="_blank"><span class="dashicons dashicons-cart"></span>Premium version</a>'
|
100 |
+
);
|
101 |
+
$links = array_merge( $links, $new_links );
|
102 |
+
}
|
103 |
+
return $links;
|
104 |
+
}
|
105 |
+
|
106 |
+
function apsc_admin_footer_text( $text ){
|
107 |
+
global $post;
|
108 |
+
if ( isset($_GET['page']) && $_GET['page'] === 'ap-social-counter') {
|
109 |
+
$text = 'Enjoyed ' . APSC_LITE_PLUGIN_NAME . '? <a href="' . APSC_LITE_RATING . '" target="_blank">Please leave us a ★★★★★ rating</a> We really appreciate your support! | Try premium version <a href="' . APSC_PRO_LINK . '" target="_blank">' . APSC_PRO_PLUGIN_NAME . '</a> - more features, more power!';
|
110 |
+
return $text;
|
111 |
+
} else {
|
112 |
+
return $text;
|
113 |
+
|
114 |
+
}
|
115 |
+
}
|
116 |
+
|
117 |
+
function plugin_text_domain(){
|
118 |
+
load_plugin_textdomain( 'accesspress-social-counter', false, basename( dirname( __FILE__ ) ) . '/languages/' );
|
119 |
+
}
|
120 |
+
|
121 |
+
function load_default_settings(){
|
122 |
+
if ( ! get_option( 'apsc_settings' ) ) {
|
123 |
+
$apsc_settings = $this -> get_default_settings();
|
124 |
+
update_option( 'apsc_settings', $apsc_settings );
|
125 |
+
}
|
126 |
+
}
|
127 |
+
|
128 |
+
|
129 |
+
function add_sc_menu(){
|
130 |
+
add_menu_page( __( 'AccessPress Social Counter', 'accesspress-social-counter' ), __( 'AccessPress Social Counter', 'accesspress-social-counter' ), 'manage_options', 'ap-social-counter', array( $this, 'sc_settings' ), SC_IMAGE_DIR . '/sc-icon.png' );
|
131 |
+
|
132 |
+
add_submenu_page('ap-social-counter', __('Documentation', 'accesspress-social-counter'), __('Documentation', 'accesspress-social-counter'), 'manage_options', 'apsc-documentation', '__return_false', null, 9);
|
133 |
+
add_submenu_page('ap-social-counter', __('Check Premium Version', 'accesspress-social-counter'), __('Check Premium Version', 'accesspress-social-counter'), 'manage_options', 'apsc-premium', '__return_false', null, 9);
|
134 |
+
}
|
135 |
+
|
136 |
+
function sc_settings(){
|
137 |
+
include('inc/backend/settings.php');
|
138 |
+
}
|
139 |
+
|
140 |
+
function register_admin_assets(){
|
141 |
+
if ( isset( $_GET[ 'page' ] ) && $_GET[ 'page' ] == 'ap-social-counter' ) {
|
142 |
+
wp_enqueue_style( 'sc-admin-css', SC_CSS_DIR . '/backend.css', array(), SC_VERSION );
|
143 |
+
wp_enqueue_script( 'sc-admin-js', SC_JS_DIR . '/backend.js', array( 'jquery', 'jquery-ui-sortable' ), SC_VERSION );
|
144 |
+
wp_enqueue_script( 'sc-wpac-time-js', SC_JS_DIR . '/wpac-time.js', array( 'jquery' ), SC_VERSION ); // Third Party API for Facebook followers count
|
145 |
+
wp_enqueue_script( 'sc-wpac-js', SC_JS_DIR . '/wpac.js', array( 'jquery' ), SC_VERSION ); // Third Party API for Facebook followers count
|
146 |
+
}
|
147 |
+
wp_enqueue_style( 'fontawesome-css', SC_CSS_DIR . '/font-awesome.min.css', false, SC_VERSION );
|
148 |
+
}
|
149 |
+
|
150 |
+
function register_frontend_assets(){
|
151 |
+
$apsc_settings = $this -> apsc_settings;
|
152 |
+
$enable_font_css = (isset( $apsc_settings[ 'disable_font_css' ] ) && $apsc_settings[ 'disable_font_css' ] == 0) ? true : false;
|
153 |
+
$enable_frontend_css = (isset( $apsc_settings[ 'disable_frontend_css' ] ) && $apsc_settings[ 'disable_frontend_css' ] == 0) ? true : false;
|
154 |
+
if ( $enable_font_css ) {
|
155 |
+
if ( isset( $apsc_settings[ 'font_awesome_version' ]) && $apsc_settings[ 'font_awesome_version' ] == 'apsc-font-awesome-four' ) {
|
156 |
+
wp_enqueue_style( 'fontawesome-four-css', SC_CSS_DIR . '/font-awesome.min.css', false, SC_VERSION );
|
157 |
+
}
|
158 |
+
else{
|
159 |
+
wp_enqueue_style( 'fontawesome-five-css', SC_CSS_DIR . '/fontawesome-all.css', false, SC_VERSION );
|
160 |
+
}
|
161 |
+
}
|
162 |
+
if ( $enable_frontend_css ) {
|
163 |
+
wp_enqueue_style( 'apsc-frontend-css', SC_CSS_DIR . '/frontend.css', array(), SC_VERSION );
|
164 |
+
}
|
165 |
+
}
|
166 |
+
|
167 |
+
function apsc_settings_action(){
|
168 |
+
if ( ! empty( $_POST ) && wp_verify_nonce( $_POST[ 'apsc_settings_nonce' ], 'apsc_settings_action' ) ) {
|
169 |
+
include('inc/backend/save-settings.php');
|
170 |
+
}
|
171 |
+
}
|
172 |
+
|
173 |
+
function print_array( $array ){
|
174 |
+
echo "<pre>";
|
175 |
+
print_r( $array );
|
176 |
+
echo "</pre>";
|
177 |
+
}
|
178 |
+
|
179 |
+
function apsc_restore_default(){
|
180 |
+
if ( ! empty( $_GET ) && wp_verify_nonce( $_GET[ '_wpnonce' ], 'apsc-restore-default-nonce' ) ) {
|
181 |
+
$apsc_settings = $this -> get_default_settings();
|
182 |
+
update_option( 'apsc_settings', $apsc_settings );
|
183 |
+
$_SESSION[ 'apsc_message' ] = __( 'Default Settings Restored Successfully', 'accesspress-social-counter' );
|
184 |
+
wp_redirect( admin_url() . 'admin.php?page=ap-social-counter' );
|
185 |
+
}
|
186 |
+
}
|
187 |
+
|
188 |
+
function get_default_settings(){
|
189 |
+
$apsc_settings = array( 'social_profile' => array( 'facebook' => array( 'page_id' => '' ),
|
190 |
+
'twitter' => array( 'username' => '', 'consumer_key' => '',
|
191 |
+
'consumer_secret' => '',
|
192 |
+
'access_token' => '',
|
193 |
+
'access_token_secret' => '' ),
|
194 |
+
'instagram' => array('app_id' => '',
|
195 |
+
'app_secret' => '',
|
196 |
+
'username' => '',
|
197 |
+
'access_token' => '',
|
198 |
+
'user_id' => '' ),
|
199 |
+
'youtube' => array( 'username' => '',
|
200 |
+
'channel_url' => '' ),
|
201 |
+
'soundcloud' => array( 'username' => '',
|
202 |
+
'client_id' => '' ),
|
203 |
+
'dribbble' => array( 'client_id' => '',
|
204 |
+
'client_secret' => '',
|
205 |
+
'username' => '',
|
206 |
+
'access_token' => ''),
|
207 |
+
),
|
208 |
+
'profile_order' => array( 'facebook', 'twitter', 'instagram', 'youtube', 'soundcloud', 'dribbble', 'posts', 'comments' ),
|
209 |
+
'social_profile_theme' => 'theme-1',
|
210 |
+
'counter_format' => 'comma',
|
211 |
+
'font_awesome_version' => 'apsc-font-awesome-five',
|
212 |
+
'cache_period' => '',
|
213 |
+
'disable_font_css' => 0,
|
214 |
+
'disable_frontend_css' => 0
|
215 |
+
);
|
216 |
+
return $apsc_settings;
|
217 |
+
}
|
218 |
+
|
219 |
+
function register_apsc_widget(){
|
220 |
+
register_widget( 'APSC_Widget' );
|
221 |
+
}
|
222 |
+
|
223 |
+
function apsc_shortcode( $atts ){
|
224 |
+
ob_start();
|
225 |
+
include('inc/frontend/shortcode.php');
|
226 |
+
$html = ob_get_contents();
|
227 |
+
ob_get_clean();
|
228 |
+
return $html;
|
229 |
+
}
|
230 |
+
|
231 |
+
function apsc_delete_cache(){
|
232 |
+
if ( ! empty( $_GET ) && wp_verify_nonce( $_GET[ '_wpnonce' ], 'apsc-cache-nonce' ) ) {
|
233 |
+
$transient_array = array( 'apsc_facebook', 'apsc_twitter', 'apsc_youtube', 'apsc_instagram','apsc_soundcloud', 'apsc_dribbble', 'apsc_posts', 'apsc_comments' );
|
234 |
+
foreach ( $transient_array as $transient ) {
|
235 |
+
delete_transient( $transient );
|
236 |
+
}
|
237 |
+
$_SESSION[ 'apsc_message' ] = __( 'Cache Deleted Successfully', 'accesspress-social-counter' );
|
238 |
+
wp_redirect( admin_url() . 'admin.php?page=ap-social-counter' );
|
239 |
+
}
|
240 |
+
}
|
241 |
+
|
242 |
+
function authorization( $user, $consumer_key, $consumer_secret, $oauth_access_token, $oauth_access_token_secret ){
|
243 |
+
$query = 'screen_name=' . $user;
|
244 |
+
$signature = $this -> signature( $query, $consumer_key, $consumer_secret, $oauth_access_token, $oauth_access_token_secret );
|
245 |
+
return $this -> header( $signature );
|
246 |
+
}
|
247 |
+
|
248 |
+
function signature_base_string( $url, $query, $method, $params ){
|
249 |
+
$return = array();
|
250 |
+
ksort( $params );
|
251 |
+
|
252 |
+
foreach ( $params as $key => $value ) {
|
253 |
+
$return[] = $key . '=' . $value;
|
254 |
+
}
|
255 |
+
|
256 |
+
return $method . "&" . rawurlencode( $url ) . '&' . rawurlencode( implode( '&', $return ) ) . '%26' . rawurlencode( $query );
|
257 |
+
}
|
258 |
+
|
259 |
+
function signature( $query, $consumer_key, $consumer_secret, $oauth_access_token, $oauth_access_token_secret ){
|
260 |
+
$oauth = array(
|
261 |
+
'oauth_consumer_key' => $consumer_key,
|
262 |
+
'oauth_nonce' => hash_hmac( 'sha1', time(), true ),
|
263 |
+
'oauth_signature_method' => 'HMAC-SHA1',
|
264 |
+
'oauth_token' => $oauth_access_token,
|
265 |
+
'oauth_timestamp' => time(),
|
266 |
+
'oauth_version' => '1.0'
|
267 |
+
);
|
268 |
+
$api_url = 'https://api.twitter.com/1.1/users/show.json';
|
269 |
+
$base_info = $this -> signature_base_string( $api_url, $query, 'GET', $oauth );
|
270 |
+
$composite_key = rawurlencode( $consumer_secret ) . '&' . rawurlencode( $oauth_access_token_secret );
|
271 |
+
$oauth_signature = base64_encode( hash_hmac( 'sha1', $base_info, $composite_key, true ) );
|
272 |
+
$oauth[ 'oauth_signature' ] = $oauth_signature;
|
273 |
+
return $oauth;
|
274 |
+
}
|
275 |
+
|
276 |
+
public function header( $signature ){
|
277 |
+
$return = 'OAuth ';
|
278 |
+
$values = array();
|
279 |
+
|
280 |
+
foreach ( $signature as $key => $value ) {
|
281 |
+
$values[] = $key . '="' . rawurlencode( $value ) . '"';
|
282 |
+
}
|
283 |
+
|
284 |
+
$return .= implode( ', ', $values );
|
285 |
+
|
286 |
+
return $return;
|
287 |
+
}
|
288 |
+
|
289 |
+
|
290 |
+
function get_twitter_count(){
|
291 |
+
$apsc_settings = $this -> apsc_settings;
|
292 |
+
$user = $apsc_settings[ 'social_profile' ][ 'twitter' ][ 'username' ];
|
293 |
+
$api_url = 'https://api.twitter.com/1.1/users/show.json';
|
294 |
+
$params = array(
|
295 |
+
'method' => 'GET',
|
296 |
+
'sslverify' => false,
|
297 |
+
'timeout' => 60,
|
298 |
+
'headers' => array(
|
299 |
+
'Content-Type' => 'application/x-www-form-urlencoded',
|
300 |
+
'Authorization' => $this -> authorization(
|
301 |
+
$user, $apsc_settings[ 'social_profile' ][ 'twitter' ][ 'consumer_key' ], $apsc_settings[ 'social_profile' ][ 'twitter' ][ 'consumer_secret' ], $apsc_settings[ 'social_profile' ][ 'twitter' ][ 'access_token' ], $apsc_settings[ 'social_profile' ][ 'twitter' ][ 'access_token_secret' ]
|
302 |
+
)
|
303 |
+
)
|
304 |
+
);
|
305 |
+
|
306 |
+
$connection = wp_remote_get( $api_url . '?screen_name=' . $user, $params );
|
307 |
+
if ( is_wp_error( $connection ) ) {
|
308 |
+
$count = 0;
|
309 |
+
} else {
|
310 |
+
$_data = json_decode( $connection[ 'body' ], true );
|
311 |
+
if ( isset( $_data[ 'followers_count' ] ) ) {
|
312 |
+
$count = intval( $_data[ 'followers_count' ] );
|
313 |
+
} else {
|
314 |
+
$count = 0;
|
315 |
+
}
|
316 |
+
}
|
317 |
+
return $count;
|
318 |
+
}
|
319 |
+
|
320 |
+
function get_formatted_count( $count, $format ){
|
321 |
+
if ( $count == '' ) {
|
322 |
+
return '';
|
323 |
+
}
|
324 |
+
switch ( $format ) {
|
325 |
+
case 'comma':
|
326 |
+
$count = number_format( $count );
|
327 |
+
break;
|
328 |
+
case 'short':
|
329 |
+
$count = $this -> abreviateTotalCount( $count );
|
330 |
+
break;
|
331 |
+
default:
|
332 |
+
break;
|
333 |
+
}
|
334 |
+
return $count;
|
335 |
+
}
|
336 |
+
|
337 |
+
function abreviateTotalCount( $value ){
|
338 |
+
|
339 |
+
$abbreviations = array( 12 => 'T', 9 => 'B', 6 => 'M', 3 => 'K', 0 => '' );
|
340 |
+
|
341 |
+
foreach ( $abbreviations as $exponent => $abbreviation ) {
|
342 |
+
|
343 |
+
if ( $value >= pow( 10, $exponent ) ) {
|
344 |
+
return round( floatval( $value / pow( 10, $exponent ) ), 1 ) . $abbreviation;
|
345 |
+
}
|
346 |
+
}
|
347 |
+
}
|
348 |
+
|
349 |
+
function facebook_count( $url ){
|
350 |
+
|
351 |
+
$fql = "SELECT like_count ";
|
352 |
+
$fql .= " FROM link_stat WHERE url = '$url'";
|
353 |
+
|
354 |
+
$fqlURL = "https://api.facebook.com/method/fql.query?format=json&query=" . urlencode( $fql );
|
355 |
+
|
356 |
+
$response = wp_remote_get( $fqlURL );
|
357 |
+
|
358 |
+
if ( ! is_wp_error( $response ) ) {
|
359 |
+
$response = json_decode( $response[ 'body' ] );
|
360 |
+
if ( is_array( $response ) && isset( $response[ 0 ] -> like_count ) ) {
|
361 |
+
return $response[ 0 ] -> like_count;
|
362 |
+
} else {
|
363 |
+
$count = '0';
|
364 |
+
return $count;
|
365 |
+
}
|
366 |
+
}else{
|
367 |
+
$count = '0';
|
368 |
+
return $count;
|
369 |
+
}
|
370 |
+
}
|
371 |
+
|
372 |
+
function get_count( $social_media ){
|
373 |
+
include('inc/frontend/api.php');
|
374 |
+
return $count;
|
375 |
+
}
|
376 |
+
|
377 |
+
function apsc_count_shortcode( $atts ){
|
378 |
+
if ( isset( $atts[ 'social_media' ] ) ) {
|
379 |
+
$count = $this -> get_count( $atts[ 'social_media' ] );
|
380 |
+
if ( isset( $atts[ 'count_format' ] ) && $count != '' ) {
|
381 |
+
$count = $this -> get_formatted_count( $count, $atts[ 'count_format' ] );
|
382 |
+
}
|
383 |
+
return $count;
|
384 |
+
}
|
385 |
+
}
|
386 |
+
|
387 |
+
function get_fb_access_token(){
|
388 |
+
$apsc_settings = $this -> apsc_settings;
|
389 |
+
$api_url = 'https://graph.facebook.com/';
|
390 |
+
$url = sprintf(
|
391 |
+
'%soauth/access_token?client_id=%s&client_secret=%s&grant_type=client_credentials', $api_url, $apsc_settings[ 'social_profile' ][ 'facebook' ][ 'app_id' ], $apsc_settings[ 'social_profile' ][ 'facebook' ][ 'app_secret' ]
|
392 |
+
);
|
393 |
+
$access_token = wp_remote_get( $url, array( 'timeout' => 60 ) );
|
394 |
+
|
395 |
+
if ( is_wp_error( $access_token ) || ( isset( $access_token[ 'response' ][ 'code' ] ) && 200 != $access_token[ 'response' ][ 'code' ] ) ) {
|
396 |
+
return '';
|
397 |
+
} else {
|
398 |
+
return sanitize_text_field( $access_token[ 'body' ] );
|
399 |
+
}
|
400 |
+
}
|
401 |
+
|
402 |
+
function new_fb_count(){
|
403 |
+
$apsc_settings = $this -> apsc_settings;
|
404 |
+
$facebook_method = ( isset( $apsc_settings[ 'social_profile' ][ 'facebook' ][ 'method' ] ) && $apsc_settings[ 'social_profile' ][ 'facebook' ][ 'method' ] != '' ) ? $apsc_settings[ 'social_profile' ][ 'facebook' ][ 'method' ] : '2';
|
405 |
+
if ( $facebook_method == '1' ) {
|
406 |
+
$access_token = $this -> get_fb_access_token();
|
407 |
+
$access_token = json_decode( $access_token );
|
408 |
+
$access_token = $access_token -> access_token;
|
409 |
+
$api_url = 'https://graph.facebook.com/v3.0/'; //not working
|
410 |
+
//$api_url = 'https://graph.facebook.com/v2.8/'; // not working
|
411 |
+
//$api_url = 'https://graph.facebook.com/v3.2/'; // not working
|
412 |
+
$url = sprintf(
|
413 |
+
'%s%s?fields=fan_count&access_token=%s', $api_url, $apsc_settings[ 'social_profile' ][ 'facebook' ][ 'page_id' ], $access_token
|
414 |
+
);
|
415 |
+
} else {
|
416 |
+
$fb_page_id = (isset( $apsc_settings[ 'social_profile' ][ 'facebook' ][ 'fb_page_id' ] ) && ! empty( $apsc_settings[ 'social_profile' ][ 'facebook' ][ 'fb_page_id' ] )) ? $apsc_settings[ 'social_profile' ][ 'facebook' ][ 'fb_page_id' ] : ' ';
|
417 |
+
$fb_access_token = (isset( $apsc_settings[ 'social_profile' ][ 'facebook' ][ 'access_token' ] ) && ! empty( $apsc_settings[ 'social_profile' ][ 'facebook' ][ 'access_token' ] )) ? $apsc_settings[ 'social_profile' ][ 'facebook' ][ 'access_token' ] : ' ';
|
418 |
+
|
419 |
+
if ( $fb_access_token != '' && $fb_page_id != '' ) {
|
420 |
+
$api_url = 'https://graph.facebook.com/';
|
421 |
+
$new_page_experience_url = sprintf(
|
422 |
+
'%s%s?fields=has_transitioned_to_new_page_experience&access_token=%s', $api_url, $fb_page_id, $fb_access_token
|
423 |
+
);
|
424 |
+
$new_page_experience = wp_remote_get($new_page_experience_url, array('timeout' => 60));
|
425 |
+
if ( is_wp_error( $new_page_experience ) || ( isset( $new_page_experience[ 'response' ][ 'code' ] ) && 200 != $new_page_experience[ 'response' ][ 'code' ] ) ) {
|
426 |
+
$url = 'https://graph.facebook.com/';
|
427 |
+
} else {
|
428 |
+
$new_page_experience_data = json_decode( $new_page_experience[ 'body' ], true );
|
429 |
+
if ( isset( $_data[ 'has_transitioned_to_new_page_experience' ] ) ) {
|
430 |
+
$has_transitioned = $_data[ 'has_transitioned_to_new_page_experience' ];
|
431 |
+
} else {
|
432 |
+
$has_transitioned = false;
|
433 |
+
}
|
434 |
+
}
|
435 |
+
if($has_transitioned) {
|
436 |
+
$url = sprintf(
|
437 |
+
'%s%s?fields=followers_count&access_token=%s', $api_url, $fb_page_id, $fb_access_token
|
438 |
+
);
|
439 |
+
} else {
|
440 |
+
$url = sprintf(
|
441 |
+
'%s%s?fields=fan_count&access_token=%s', $api_url, $fb_page_id, $fb_access_token
|
442 |
+
);
|
443 |
+
}
|
444 |
+
// $url = sprintf(
|
445 |
+
// '%s%s?fields=fan_count&access_token=%s', $api_url, $fb_page_id, $fb_access_token
|
446 |
+
// );
|
447 |
+
} else {
|
448 |
+
$url = 'https://graph.facebook.com/';
|
449 |
+
}
|
450 |
+
}
|
451 |
+
$connection = wp_remote_get( $url, array( 'timeout' => 60 ) );
|
452 |
+
|
453 |
+
if ( is_wp_error( $connection ) || ( isset( $connection[ 'response' ][ 'code' ] ) && 200 != $connection[ 'response' ][ 'code' ] ) ) {
|
454 |
+
$count = 0;
|
455 |
+
} else {
|
456 |
+
$_data = json_decode( $connection[ 'body' ], true );
|
457 |
+
if ( isset( $_data[ 'fan_count' ] ) ) {
|
458 |
+
$count = intval( $_data[ 'fan_count' ] );
|
459 |
+
} else {
|
460 |
+
$count = 0;
|
461 |
+
}
|
462 |
+
}
|
463 |
+
return $count;
|
464 |
+
}
|
465 |
+
}
|
466 |
+
$sc_object = new SC_Class();
|
467 |
+
}
|
inc/frontend/social_network/extract_count/facebook.php
CHANGED
@@ -1,47 +1,22 @@
|
|
1 |
-
<?php defined( 'ABSPATH' ) or die( "No script kiddies please!" );
|
2 |
-
|
3 |
-
|
4 |
-
|
5 |
-
|
6 |
-
|
7 |
-
|
8 |
-
|
9 |
-
|
10 |
-
|
11 |
-
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
//$count = ($count == 0) ? $default_count : $count;
|
24 |
-
//if ( $count != 0 ) {
|
25 |
-
// set_transient( 'apsc_facebook', $count, $cache_period );
|
26 |
-
//}
|
27 |
-
$facebook_page_id = isset( $apsc_settings[ 'social_profile' ][ 'facebook' ][ 'page_id' ] ) && $apsc_settings[ 'social_profile' ][ 'facebook' ][ 'page_id' ] != '' ? $apsc_settings[ 'social_profile' ][ 'facebook' ][ 'page_id' ] : '';
|
28 |
-
$default_count = isset( $apsc_settings[ 'social_profile' ][ 'facebook' ][ 'default_count' ] ) && $apsc_settings[ 'social_profile' ][ 'facebook' ][ 'default_count' ] != '' ? $apsc_settings[ 'social_profile' ][ 'facebook' ][ 'default_count' ] : '0';
|
29 |
-
$facebook_count = get_transient( 'apsc_facebook' );
|
30 |
-
if ( false === $facebook_count ) {
|
31 |
-
$facebook_method = ( isset( $apsc_settings[ 'social_profile' ][ 'facebook' ][ 'method' ] ) && $apsc_settings[ 'social_profile' ][ 'facebook' ][ 'method' ] != '' ) ? esc_attr( $apsc_settings[ 'social_profile' ][ 'facebook' ][ 'method' ] ) : '2';
|
32 |
-
if ( $facebook_method == '1' ) {
|
33 |
-
if ( isset( $apsc_settings[ 'social_profile' ][ 'facebook' ][ 'app_id' ], $apsc_settings[ 'social_profile' ][ 'facebook' ][ 'app_secret' ] ) && $apsc_settings[ 'social_profile' ][ 'facebook' ][ 'app_id' ] != '' && $apsc_settings[ 'social_profile' ][ 'facebook' ][ 'app_secret' ] != '' ) {
|
34 |
-
$count = $this -> new_fb_count();
|
35 |
-
} else {
|
36 |
-
$api_url = 'https://www.facebook.com/' . $facebook_page_id;
|
37 |
-
$count = $this -> facebook_count( $api_url );
|
38 |
-
}
|
39 |
-
} else {
|
40 |
-
$count = $this -> new_fb_count();
|
41 |
-
}
|
42 |
-
$count = ($count == 0) ? $default_count : $count;
|
43 |
-
set_transient( 'apsc_facebook', $count, $cache_period );
|
44 |
-
} else {
|
45 |
-
$count = $facebook_count;
|
46 |
-
}
|
47 |
-
|
1 |
+
<?php defined( 'ABSPATH' ) or die( "No script kiddies please!" );
|
2 |
+
$facebook_page_id = isset( $apsc_settings[ 'social_profile' ][ 'facebook' ][ 'page_id' ] ) && $apsc_settings[ 'social_profile' ][ 'facebook' ][ 'page_id' ] != '' ? $apsc_settings[ 'social_profile' ][ 'facebook' ][ 'page_id' ] : '';
|
3 |
+
$default_count = isset( $apsc_settings[ 'social_profile' ][ 'facebook' ][ 'default_count' ] ) && $apsc_settings[ 'social_profile' ][ 'facebook' ][ 'default_count' ] != '' ? $apsc_settings[ 'social_profile' ][ 'facebook' ][ 'default_count' ] : '0';
|
4 |
+
$facebook_count = get_transient( 'apsc_facebook' );
|
5 |
+
if ( false === $facebook_count ) {
|
6 |
+
$facebook_method = ( isset( $apsc_settings[ 'social_profile' ][ 'facebook' ][ 'method' ] ) && $apsc_settings[ 'social_profile' ][ 'facebook' ][ 'method' ] != '' ) ? esc_attr( $apsc_settings[ 'social_profile' ][ 'facebook' ][ 'method' ] ) : '2';
|
7 |
+
if ( $facebook_method == '1' ) {
|
8 |
+
if ( isset( $apsc_settings[ 'social_profile' ][ 'facebook' ][ 'app_id' ], $apsc_settings[ 'social_profile' ][ 'facebook' ][ 'app_secret' ] ) && $apsc_settings[ 'social_profile' ][ 'facebook' ][ 'app_id' ] != '' && $apsc_settings[ 'social_profile' ][ 'facebook' ][ 'app_secret' ] != '' ) {
|
9 |
+
$count = $this -> new_fb_count();
|
10 |
+
} else {
|
11 |
+
$api_url = 'https://www.facebook.com/' . $facebook_page_id;
|
12 |
+
$count = $this -> facebook_count( $api_url );
|
13 |
+
}
|
14 |
+
} else {
|
15 |
+
$count = $this -> new_fb_count();
|
16 |
+
}
|
17 |
+
$count = ($count == 0) ? $default_count : $count;
|
18 |
+
set_transient( 'apsc_facebook', $count, $cache_period );
|
19 |
+
} else {
|
20 |
+
$count = $facebook_count;
|
21 |
+
}
|
22 |
+
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
readme.txt
CHANGED
@@ -1,404 +1,407 @@
|
|
1 |
-
=== AccessPress Social Counter ===
|
2 |
-
Contributors: Access Keys
|
3 |
-
Tags: social count, social counter, social counters, social media counters, social media, social network, social profiles counter, social profile count, social profile, social icons, social icon counter
|
4 |
-
Donate link: http://accesspressthemes.com/donation/
|
5 |
-
Requires at least: 4.5
|
6 |
-
Tested up to: 5.7
|
7 |
-
Stable tag: 1.9.
|
8 |
-
License: GPLv2 or later
|
9 |
-
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
10 |
-
|
11 |
-
A plugin to display your social accounts fans, subscribers and followers number on your website with handful of backend settings.
|
12 |
-
|
13 |
-
== Description ==
|
14 |
-
[Documentation](https://accesspressthemes.com/documentation/accesspress-social-counter/) | [Support](https://accesspressthemes.com/support) | [Demo](http://demo.accesspressthemes.com/wordpress-plugins/accesspress-social-counter/) | [Premium Version](https://accesspressthemes.com/wordpress-plugins/accesspress-social-pro/)
|
15 |
-
|
16 |
-
<strong>AccessPress Social Counter</strong> is a <strong>Free WordPress plugin</strong> to display your social accounts fans, subscribers and followers number on your website!
|
17 |
-
A perfect plugin to show your social media stats and encourage more to join your network.
|
18 |
-
|
19 |
-
You can select the social media profiles you want to activate, enter details of your social media and select one of the designs from beautifully designed 5 design themes.
|
20 |
-
|
21 |
-
All you have to do is either use a widget or shortcode to display your social media counter right on your website in your chosen location!
|
22 |
-
|
23 |
-
The available social media in FREE version are: Facebook, Twitter, Instagram, Youtube, Sound Cloud and Dribbble along with Posts and Comments count.
|
24 |
-
|
25 |
-
Just get it done in a few minutes!
|
26 |
-
|
27 |
-
`For more social media integration, more design options, floating sidebar
|
28 |
-
options,social sharing options, pinterest sharing options and more
|
29 |
-
features please upgrade to Premium version.`
|
30 |
-
|
31 |
-
Note: If Instagram followers count is returning 0, it is due to change in the instagram API. Please get the new access token again from the plugin's settings.
|
32 |
-
|
33 |
-
= Free Features: =
|
34 |
-
|
35 |
-
* <strong>Beautifully designed 5 themes to select from.</strong> More available in Pro versoin.
|
36 |
-
* <strong>Major 7 social media included </strong>(Facebook, Twitter, Instagram, Youtube, Sound Cloud and Dribbble). More available in Pro versoin.
|
37 |
-
* <strong>Latest use of APIs to fetch data</strong>
|
38 |
-
* <strong>Auto updates on all APIs</strong>
|
39 |
-
* <strong>Option to select which social media profile to show</strong>
|
40 |
-
* <strong>Display order for selected social media</strong>
|
41 |
-
* <strong>Cache setting</strong> - you can set a cache period to avoid frequent API calls
|
42 |
-
* <strong>Fully Responsive</strong> - compatible with mobile devices
|
43 |
-
* <strong>User friendly and very interactive user interface</strong>
|
44 |
-
- Anyone can use it, its as easy as drag and drop.
|
45 |
-
* <strong>Upgrades available</strong>
|
46 |
-
- For more features like more social media profiles, more design themes, your own design etc. - upgrade to Pro.
|
47 |
-
* <strong>Support</strong>
|
48 |
-
- Dedicated email, forum support
|
49 |
-
* <strong>Free updates</strong>
|
50 |
-
- Get free updates for lifetime.
|
51 |
-
|
52 |
-
[youtube https://www.youtube.com/watch?v=96E67Z6AKM8]
|
53 |
-
|
54 |
-
= Premium Features: =
|
55 |
-
★ Major 18 social media included(Facebook, Twitter, Instagram,
|
56 |
-
SoundCloud, Dribbble, Youtube, Steam, Vimeo, Pinterest, Forrst, VK,
|
57 |
-
Flickr, Behance, Github, Envato,Posts, Comments)
|
58 |
-
|
59 |
-
★ Beautifully designed 20 themes to select from.
|
60 |
-
|
61 |
-
★ 5 soothing animations
|
62 |
-
|
63 |
-
★ Floating Sidebar with 5 beautiful themes
|
64 |
-
|
65 |
-
★ Different Social Media Sharing Options with 10 pre available themes
|
66 |
-
|
67 |
-
★ Floating Social Sharing Sidebar with 4 pre available themes
|
68 |
-
|
69 |
-
★ Pinterest Sharing Options
|
70 |
-
|
71 |
-
★ Popup sharing and many more...
|
72 |
-
|
73 |
-
= Premium Upgrade =
|
74 |
-
* For premium upgrade, please go [here](https://accesspressthemes.com/wordpress-plugins/accesspress-social-pro/)
|
75 |
-
|
76 |
-
= Available Languages =
|
77 |
-
* English
|
78 |
-
* Serbo-Croatian
|
79 |
-
* Belarussian
|
80 |
-
|
81 |
-
= Translators =
|
82 |
-
* Serbo-Croatian - Borisa Djuraskovic ( http://www.webhostinghub.com )
|
83 |
-
* Belarussian - UStarCash ( https://www.ustarcash.com )
|
84 |
-
|
85 |
-
= Some Useful Links =
|
86 |
-
* <strong>Support Email</strong>: support@accesspressthemes.com
|
87 |
-
* <strong>Support Forum Link</strong>: http://accesspressthemes.com/support/
|
88 |
-
* <strong>Youtube channel link</strong>: https://www.youtube.com/watch?v=TjZNcVG3fDE
|
89 |
-
* <strong>Facebook link</strong>: https://www.facebook.com/AccessPressThemes
|
90 |
-
|
91 |
-
|
92 |
-
For a easy installation guide checkout the Installation tab above.
|
93 |
-
|
94 |
-
For complete information and documentation regarding plugin,please visit below links.
|
95 |
-
|
96 |
-
[Plugin information](https://accesspressthemes.com/wordpress-plugins/accesspress-social-counter/)
|
97 |
-
|
98 |
-
[Docs](https://accesspressthemes.com/documentation/accesspress-social-counter/ )
|
99 |
-
|
100 |
-
[Demo](http://demo.accesspressthemes.com/wordpress-plugins/accesspress-social-counter/)
|
101 |
-
|
102 |
-
|
103 |
-
== Installation ==
|
104 |
-
1. Unzip accesspress-social-counter.zip
|
105 |
-
1. Upload all the files to the /wp-content/plugins/accesspress-social-counter
|
106 |
-
1. Activate the plugin through the 'Plugins' menu in WordPress.
|
107 |
-
1. For customizing the plugin's settings, click on AccessPress Social Counter menu in Wordpress left admin menu.
|
108 |
-
1. To display the social counts in the frontend,please use [aps-counter] shortcode or AccessPress Social Counter widgets wherever necessary.
|
109 |
-
|
110 |
-
== Frequently Asked Questions ==
|
111 |
-
= What does this plugin do? =
|
112 |
-
This plugin provides the ability to to display your social accounts fans, subscribers and followers number on your website along with the links to your social profile sites.
|
113 |
-
|
114 |
-
= Will it effect my site's speed? =
|
115 |
-
No , because we have provided the caching option to store the count in the database and update within certain period kept in the plugin cache settings section.
|
116 |
-
|
117 |
-
= Do I need to design the icons again? =
|
118 |
-
No , you won't need to get any trouble regarding design and layout of the icons since we have provided inbuilt 5 beautiful icon themes.You can choose any as per your requirement.
|
119 |
-
|
120 |
-
|
121 |
-
= Where can I find the documentation for the plugin? =
|
122 |
-
Once you install the plugin , you can check some general documentation about how to use the plugin in the "How to use" panel of the plugin's settings page.Complete documentation can be found [here](https://accesspressthemes.com/documentation/documentation-plugin-instruction-accesspress-social-counter/).
|
123 |
-
|
124 |
-
== Screenshots ==
|
125 |
-
1. Frontend Display of Social Counts
|
126 |
-
2. Frontend Display of Social Counts
|
127 |
-
3. Backend Social Profiles Section
|
128 |
-
4. Backend Display Settings Section
|
129 |
-
5. Backend Cache Settings Section
|
130 |
-
|
131 |
-
== Changelog ==
|
132 |
-
|
133 |
-
= 1.9.
|
134 |
-
*
|
135 |
-
|
136 |
-
= 1.
|
137 |
-
*
|
138 |
-
|
139 |
-
|
140 |
-
|
141 |
-
|
142 |
-
*
|
143 |
-
|
144 |
-
|
145 |
-
|
146 |
-
*
|
147 |
-
|
148 |
-
= 1.8.
|
149 |
-
*
|
150 |
-
|
151 |
-
= 1.8.
|
152 |
-
* Bug fix related to
|
153 |
-
|
154 |
-
= 1.8.
|
155 |
-
*
|
156 |
-
|
157 |
-
= 1.8.
|
158 |
-
*
|
159 |
-
|
160 |
-
= 1.8.
|
161 |
-
*
|
162 |
-
|
163 |
-
= 1.8.
|
164 |
-
*
|
165 |
-
|
166 |
-
= 1.8.
|
167 |
-
* Bug fix ralated to
|
168 |
-
|
169 |
-
|
170 |
-
|
171 |
-
*
|
172 |
-
|
173 |
-
= 1.7.
|
174 |
-
*
|
175 |
-
|
176 |
-
|
177 |
-
|
178 |
-
*
|
179 |
-
|
180 |
-
= 1.7.
|
181 |
-
*
|
182 |
-
|
183 |
-
= 1.7.
|
184 |
-
*
|
185 |
-
|
186 |
-
= 1.7.
|
187 |
-
*
|
188 |
-
|
189 |
-
|
190 |
-
|
191 |
-
*
|
192 |
-
|
193 |
-
= 1.7.
|
194 |
-
*
|
195 |
-
|
196 |
-
= 1.
|
197 |
-
* Updated
|
198 |
-
|
199 |
-
= 1.6.
|
200 |
-
*
|
201 |
-
|
202 |
-
= 1.6.
|
203 |
-
*
|
204 |
-
|
205 |
-
= 1.6.
|
206 |
-
*
|
207 |
-
|
208 |
-
= 1.6.
|
209 |
-
*
|
210 |
-
|
211 |
-
= 1.6.
|
212 |
-
*
|
213 |
-
|
214 |
-
= 1.6.
|
215 |
-
*
|
216 |
-
|
217 |
-
|
218 |
-
|
219 |
-
*
|
220 |
-
|
221 |
-
= 1.6.
|
222 |
-
*
|
223 |
-
|
224 |
-
|
225 |
-
|
226 |
-
|
227 |
-
-
|
228 |
-
-
|
229 |
-
-
|
230 |
-
-
|
231 |
-
-
|
232 |
-
-
|
233 |
-
|
234 |
-
|
235 |
-
|
236 |
-
|
237 |
-
= 1.
|
238 |
-
* Added
|
239 |
-
|
240 |
-
= 1.5.
|
241 |
-
*
|
242 |
-
|
243 |
-
= 1.5.
|
244 |
-
* Fixed the
|
245 |
-
|
246 |
-
= 1.5.
|
247 |
-
*
|
248 |
-
|
249 |
-
= 1.5.
|
250 |
-
* Updated
|
251 |
-
|
252 |
-
= 1.5.
|
253 |
-
*
|
254 |
-
|
255 |
-
|
256 |
-
|
257 |
-
* Updated
|
258 |
-
|
259 |
-
= 1.5.
|
260 |
-
* Updated
|
261 |
-
|
262 |
-
= 1.5.
|
263 |
-
* Updated
|
264 |
-
|
265 |
-
= 1.5.
|
266 |
-
*
|
267 |
-
|
268 |
-
= 1.
|
269 |
-
* Done some
|
270 |
-
|
271 |
-
= 1.4.
|
272 |
-
*
|
273 |
-
|
274 |
-
= 1.4.
|
275 |
-
*
|
276 |
-
|
277 |
-
= 1.4.
|
278 |
-
* Added
|
279 |
-
|
280 |
-
= 1.4.
|
281 |
-
*
|
282 |
-
|
283 |
-
= 1.4.
|
284 |
-
* Updated
|
285 |
-
|
286 |
-
= 1.4.
|
287 |
-
* Updated
|
288 |
-
|
289 |
-
= 1.4.
|
290 |
-
*
|
291 |
-
|
292 |
-
= 1.4.
|
293 |
-
*
|
294 |
-
|
295 |
-
= 1.4.
|
296 |
-
*
|
297 |
-
|
298 |
-
= 1.
|
299 |
-
*
|
300 |
-
|
301 |
-
|
302 |
-
|
303 |
-
|
304 |
-
*
|
305 |
-
|
306 |
-
= 1.3.
|
307 |
-
*
|
308 |
-
|
309 |
-
|
310 |
-
|
311 |
-
|
312 |
-
|
313 |
-
|
314 |
-
|
315 |
-
*
|
316 |
-
|
317 |
-
|
318 |
-
*
|
319 |
-
|
320 |
-
|
321 |
-
*
|
322 |
-
|
323 |
-
= 1.3.
|
324 |
-
*
|
325 |
-
|
326 |
-
= 1.3.
|
327 |
-
*
|
328 |
-
|
329 |
-
= 1.3.
|
330 |
-
*
|
331 |
-
|
332 |
-
|
333 |
-
|
334 |
-
|
335 |
-
*
|
336 |
-
|
337 |
-
= 1.
|
338 |
-
*
|
339 |
-
|
340 |
-
|
341 |
-
|
342 |
-
* Added
|
343 |
-
|
344 |
-
= 1.1.
|
345 |
-
*
|
346 |
-
|
347 |
-
= 1.1.
|
348 |
-
*
|
349 |
-
|
350 |
-
= 1.1.
|
351 |
-
*
|
352 |
-
|
353 |
-
= 1.1.
|
354 |
-
* Updated some css for theme
|
355 |
-
|
356 |
-
= 1.1.
|
357 |
-
* Updated some css for theme
|
358 |
-
|
359 |
-
= 1.1.
|
360 |
-
* Updated some css for theme
|
361 |
-
|
362 |
-
= 1.1.
|
363 |
-
* Updated some css for theme
|
364 |
-
|
365 |
-
= 1.1.
|
366 |
-
*
|
367 |
-
|
368 |
-
= 1.1.
|
369 |
-
*
|
370 |
-
|
371 |
-
|
372 |
-
|
373 |
-
*
|
374 |
-
|
375 |
-
= 1.0.
|
376 |
-
* Fixed
|
377 |
-
|
378 |
-
= 1.0.
|
379 |
-
*
|
380 |
-
|
381 |
-
= 1.0.
|
382 |
-
*
|
383 |
-
|
384 |
-
= 1.0.
|
385 |
-
* Done
|
386 |
-
|
387 |
-
= 1.0.
|
388 |
-
*
|
389 |
-
|
390 |
-
= 1.0.
|
391 |
-
* Added
|
392 |
-
|
393 |
-
= 1.0.
|
394 |
-
*
|
395 |
-
|
396 |
-
= 1.0.
|
397 |
-
* Done
|
398 |
-
|
399 |
-
= 1.0.
|
400 |
-
*
|
401 |
-
|
402 |
-
|
403 |
-
|
|
|
|
|
|
|
404 |
There is an update available for the AccessPress Social Counter Plugin.Please update to recieve new updates and bug fixes.
|
1 |
+
=== AccessPress Social Counter ===
|
2 |
+
Contributors: Access Keys
|
3 |
+
Tags: social count, social counter, social counters, social media counters, social media, social network, social profiles counter, social profile count, social profile, social icons, social icon counter
|
4 |
+
Donate link: http://accesspressthemes.com/donation/
|
5 |
+
Requires at least: 4.5
|
6 |
+
Tested up to: 5.7.2
|
7 |
+
Stable tag: 1.9.1
|
8 |
+
License: GPLv2 or later
|
9 |
+
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
10 |
+
|
11 |
+
A plugin to display your social accounts fans, subscribers and followers number on your website with handful of backend settings.
|
12 |
+
|
13 |
+
== Description ==
|
14 |
+
[Documentation](https://accesspressthemes.com/documentation/accesspress-social-counter/) | [Support](https://accesspressthemes.com/support) | [Demo](http://demo.accesspressthemes.com/wordpress-plugins/accesspress-social-counter/) | [Premium Version](https://accesspressthemes.com/wordpress-plugins/accesspress-social-pro/)
|
15 |
+
|
16 |
+
<strong>AccessPress Social Counter</strong> is a <strong>Free WordPress plugin</strong> to display your social accounts fans, subscribers and followers number on your website!
|
17 |
+
A perfect plugin to show your social media stats and encourage more to join your network.
|
18 |
+
|
19 |
+
You can select the social media profiles you want to activate, enter details of your social media and select one of the designs from beautifully designed 5 design themes.
|
20 |
+
|
21 |
+
All you have to do is either use a widget or shortcode to display your social media counter right on your website in your chosen location!
|
22 |
+
|
23 |
+
The available social media in FREE version are: Facebook, Twitter, Instagram, Youtube, Sound Cloud and Dribbble along with Posts and Comments count.
|
24 |
+
|
25 |
+
Just get it done in a few minutes!
|
26 |
+
|
27 |
+
`For more social media integration, more design options, floating sidebar
|
28 |
+
options,social sharing options, pinterest sharing options and more
|
29 |
+
features please upgrade to Premium version.`
|
30 |
+
|
31 |
+
Note: If Instagram followers count is returning 0, it is due to change in the instagram API. Please get the new access token again from the plugin's settings.
|
32 |
+
|
33 |
+
= Free Features: =
|
34 |
+
|
35 |
+
* <strong>Beautifully designed 5 themes to select from.</strong> More available in Pro versoin.
|
36 |
+
* <strong>Major 7 social media included </strong>(Facebook, Twitter, Instagram, Youtube, Sound Cloud and Dribbble). More available in Pro versoin.
|
37 |
+
* <strong>Latest use of APIs to fetch data</strong>
|
38 |
+
* <strong>Auto updates on all APIs</strong>
|
39 |
+
* <strong>Option to select which social media profile to show</strong>
|
40 |
+
* <strong>Display order for selected social media</strong>
|
41 |
+
* <strong>Cache setting</strong> - you can set a cache period to avoid frequent API calls
|
42 |
+
* <strong>Fully Responsive</strong> - compatible with mobile devices
|
43 |
+
* <strong>User friendly and very interactive user interface</strong>
|
44 |
+
- Anyone can use it, its as easy as drag and drop.
|
45 |
+
* <strong>Upgrades available</strong>
|
46 |
+
- For more features like more social media profiles, more design themes, your own design etc. - upgrade to Pro.
|
47 |
+
* <strong>Support</strong>
|
48 |
+
- Dedicated email, forum support
|
49 |
+
* <strong>Free updates</strong>
|
50 |
+
- Get free updates for lifetime.
|
51 |
+
|
52 |
+
[youtube https://www.youtube.com/watch?v=96E67Z6AKM8]
|
53 |
+
|
54 |
+
= Premium Features: =
|
55 |
+
★ Major 18 social media included(Facebook, Twitter, Instagram,
|
56 |
+
SoundCloud, Dribbble, Youtube, Steam, Vimeo, Pinterest, Forrst, VK,
|
57 |
+
Flickr, Behance, Github, Envato,Posts, Comments)
|
58 |
+
|
59 |
+
★ Beautifully designed 20 themes to select from.
|
60 |
+
|
61 |
+
★ 5 soothing animations
|
62 |
+
|
63 |
+
★ Floating Sidebar with 5 beautiful themes
|
64 |
+
|
65 |
+
★ Different Social Media Sharing Options with 10 pre available themes
|
66 |
+
|
67 |
+
★ Floating Social Sharing Sidebar with 4 pre available themes
|
68 |
+
|
69 |
+
★ Pinterest Sharing Options
|
70 |
+
|
71 |
+
★ Popup sharing and many more...
|
72 |
+
|
73 |
+
= Premium Upgrade =
|
74 |
+
* For premium upgrade, please go [here](https://accesspressthemes.com/wordpress-plugins/accesspress-social-pro/)
|
75 |
+
|
76 |
+
= Available Languages =
|
77 |
+
* English
|
78 |
+
* Serbo-Croatian
|
79 |
+
* Belarussian
|
80 |
+
|
81 |
+
= Translators =
|
82 |
+
* Serbo-Croatian - Borisa Djuraskovic ( http://www.webhostinghub.com )
|
83 |
+
* Belarussian - UStarCash ( https://www.ustarcash.com )
|
84 |
+
|
85 |
+
= Some Useful Links =
|
86 |
+
* <strong>Support Email</strong>: support@accesspressthemes.com
|
87 |
+
* <strong>Support Forum Link</strong>: http://accesspressthemes.com/support/
|
88 |
+
* <strong>Youtube channel link</strong>: https://www.youtube.com/watch?v=TjZNcVG3fDE
|
89 |
+
* <strong>Facebook link</strong>: https://www.facebook.com/AccessPressThemes
|
90 |
+
|
91 |
+
|
92 |
+
For a easy installation guide checkout the Installation tab above.
|
93 |
+
|
94 |
+
For complete information and documentation regarding plugin,please visit below links.
|
95 |
+
|
96 |
+
[Plugin information](https://accesspressthemes.com/wordpress-plugins/accesspress-social-counter/)
|
97 |
+
|
98 |
+
[Docs](https://accesspressthemes.com/documentation/accesspress-social-counter/ )
|
99 |
+
|
100 |
+
[Demo](http://demo.accesspressthemes.com/wordpress-plugins/accesspress-social-counter/)
|
101 |
+
|
102 |
+
|
103 |
+
== Installation ==
|
104 |
+
1. Unzip accesspress-social-counter.zip
|
105 |
+
1. Upload all the files to the /wp-content/plugins/accesspress-social-counter
|
106 |
+
1. Activate the plugin through the 'Plugins' menu in WordPress.
|
107 |
+
1. For customizing the plugin's settings, click on AccessPress Social Counter menu in Wordpress left admin menu.
|
108 |
+
1. To display the social counts in the frontend,please use [aps-counter] shortcode or AccessPress Social Counter widgets wherever necessary.
|
109 |
+
|
110 |
+
== Frequently Asked Questions ==
|
111 |
+
= What does this plugin do? =
|
112 |
+
This plugin provides the ability to to display your social accounts fans, subscribers and followers number on your website along with the links to your social profile sites.
|
113 |
+
|
114 |
+
= Will it effect my site's speed? =
|
115 |
+
No , because we have provided the caching option to store the count in the database and update within certain period kept in the plugin cache settings section.
|
116 |
+
|
117 |
+
= Do I need to design the icons again? =
|
118 |
+
No , you won't need to get any trouble regarding design and layout of the icons since we have provided inbuilt 5 beautiful icon themes.You can choose any as per your requirement.
|
119 |
+
|
120 |
+
|
121 |
+
= Where can I find the documentation for the plugin? =
|
122 |
+
Once you install the plugin , you can check some general documentation about how to use the plugin in the "How to use" panel of the plugin's settings page.Complete documentation can be found [here](https://accesspressthemes.com/documentation/documentation-plugin-instruction-accesspress-social-counter/).
|
123 |
+
|
124 |
+
== Screenshots ==
|
125 |
+
1. Frontend Display of Social Counts
|
126 |
+
2. Frontend Display of Social Counts
|
127 |
+
3. Backend Social Profiles Section
|
128 |
+
4. Backend Display Settings Section
|
129 |
+
5. Backend Cache Settings Section
|
130 |
+
|
131 |
+
== Changelog ==
|
132 |
+
|
133 |
+
= 1.9.1 =
|
134 |
+
* Solved facebook page follower count issue for pages transitioned to new page experience.
|
135 |
+
|
136 |
+
= 1.9.0 =
|
137 |
+
* Few backend code refinement
|
138 |
+
|
139 |
+
= 1.8.9 =
|
140 |
+
* Solved facebook page follower count issue.
|
141 |
+
* Added new settings for instagram and dribbble to fetch follower count.
|
142 |
+
* WordPress latest version compatibility checked.
|
143 |
+
|
144 |
+
= 1.8.8 =
|
145 |
+
* Added font awesome 4 and 5 compatibility settings in backend and frontend.
|
146 |
+
* Added few css to solve font awesome issue.
|
147 |
+
|
148 |
+
= 1.8.7 =
|
149 |
+
* General bug fixes and refinement in the script
|
150 |
+
|
151 |
+
= 1.8.6 =
|
152 |
+
* Bug fix related to Facebook Count
|
153 |
+
|
154 |
+
= 1.8.5 =
|
155 |
+
* Bug fix related to social networks sorting
|
156 |
+
|
157 |
+
= 1.8.4 =
|
158 |
+
* Refinements in the plugin to avoid trademark infringement
|
159 |
+
|
160 |
+
= 1.8.3 =
|
161 |
+
* Bug fix related to Google+
|
162 |
+
|
163 |
+
= 1.8.2 =
|
164 |
+
* Removed Google+ from the plugin
|
165 |
+
|
166 |
+
= 1.8.1 =
|
167 |
+
* Bug fix ralated to Facebook link
|
168 |
+
|
169 |
+
= 1.8.0 =
|
170 |
+
* Bug fix ralated to instagram count
|
171 |
+
* Refinement in the code
|
172 |
+
|
173 |
+
= 1.7.9 =
|
174 |
+
* General bug fixes in the plugin
|
175 |
+
|
176 |
+
= 1.7.8 =
|
177 |
+
* Addition of third party API to extract Facebook count
|
178 |
+
* Addition of default count values for all the available networks
|
179 |
+
|
180 |
+
= 1.7.7 =
|
181 |
+
* WordPress 5.0 compatibility check
|
182 |
+
|
183 |
+
= 1.7.4 =
|
184 |
+
* Update in Facebook API
|
185 |
+
|
186 |
+
= 1.7.3 =
|
187 |
+
* Changed field type for cache settings from text to number
|
188 |
+
|
189 |
+
= 1.7.2 =
|
190 |
+
* Removed notice for Youtube counter
|
191 |
+
* Compatibility check for version 4.8
|
192 |
+
|
193 |
+
= 1.7.1 =
|
194 |
+
* Done the bug fixings for the facebook followers counter.
|
195 |
+
|
196 |
+
= 1.7.0 =
|
197 |
+
* Updated google Plus setup description
|
198 |
+
|
199 |
+
= 1.6.9 =
|
200 |
+
* Updated file_get_contents with wp_remote_get for FQL
|
201 |
+
|
202 |
+
= 1.6.8 =
|
203 |
+
* Done small change in backend checkbox label layout
|
204 |
+
|
205 |
+
= 1.6.7 =
|
206 |
+
* Removed fontawesome CDN and enqueued locally as per WordPress Plugin Guidlines
|
207 |
+
|
208 |
+
= 1.6.6 =
|
209 |
+
* Updated documentation URL
|
210 |
+
|
211 |
+
= 1.6.5 =
|
212 |
+
* Removed session from backend
|
213 |
+
|
214 |
+
= 1.6.4 =
|
215 |
+
* Updated Documentation link in how to use section
|
216 |
+
|
217 |
+
= 1.6.3 =
|
218 |
+
* Changed backend settings tabs layout
|
219 |
+
* Added More WordPress Resources link
|
220 |
+
|
221 |
+
= 1.6.2 =
|
222 |
+
* Fixed the facebook counter issue for the wordpress version 4.6.
|
223 |
+
|
224 |
+
= 1.6.1 =
|
225 |
+
* Updated backend notes to dismissible notices
|
226 |
+
* Added below hooks on all the social network anchor links
|
227 |
+
- apsc_facebook_link
|
228 |
+
- apsc_twitter_link
|
229 |
+
- apsc_googlePlus_link
|
230 |
+
- apsc_instagram_link
|
231 |
+
- apsc_youtube_link
|
232 |
+
- apsc_soundcloud_link
|
233 |
+
- apsc_dribbble_link
|
234 |
+
- apsc_posts_link
|
235 |
+
- apsc_comments_link
|
236 |
+
|
237 |
+
= 1.6.0 =
|
238 |
+
* Added tutuorial video in how to use section.
|
239 |
+
|
240 |
+
= 1.5.9 =
|
241 |
+
* Added Belarussian Language
|
242 |
+
|
243 |
+
= 1.5.8 =
|
244 |
+
* Fixed the Facebook followers count issue for Facebook APP API version 2.5 and above.
|
245 |
+
|
246 |
+
= 1.5.7 =
|
247 |
+
* Fixed the instagram followers count issues.
|
248 |
+
|
249 |
+
= 1.5.6 =
|
250 |
+
* Updated about section
|
251 |
+
|
252 |
+
= 1.5.5 =
|
253 |
+
* Updated layout of backend message
|
254 |
+
|
255 |
+
= 1.5.4 =
|
256 |
+
* Changed link for facebook and google to https
|
257 |
+
* Updated heading notes layout in settings page
|
258 |
+
|
259 |
+
= 1.5.3 =
|
260 |
+
* Updated google API key generation procedure
|
261 |
+
|
262 |
+
= 1.5.2 =
|
263 |
+
* Updated FB API to work with new graph API
|
264 |
+
|
265 |
+
= 1.5.1 =
|
266 |
+
* Updated language file
|
267 |
+
|
268 |
+
= 1.5.0 =
|
269 |
+
* Done some modifications for WordPress 4.4 compatibility
|
270 |
+
|
271 |
+
= 1.4.9 =
|
272 |
+
* Done some css refining for theme 1
|
273 |
+
|
274 |
+
= 1.4.8 =
|
275 |
+
* Fixed file missing bug for system status
|
276 |
+
|
277 |
+
= 1.4.7 =
|
278 |
+
* Added system status tab
|
279 |
+
|
280 |
+
= 1.4.6 =
|
281 |
+
* Added some css to resolve the conflict
|
282 |
+
|
283 |
+
= 1.4.5 =
|
284 |
+
* Updated how to use section
|
285 |
+
|
286 |
+
= 1.4.4 =
|
287 |
+
* Updated backend notes layout
|
288 |
+
|
289 |
+
= 1.4.3 =
|
290 |
+
* Updated text domain to match the plugin's slug
|
291 |
+
|
292 |
+
= 1.4.2 =
|
293 |
+
* Fixed small bug regarding new added option
|
294 |
+
|
295 |
+
= 1.4.1 =
|
296 |
+
* Added font and frontend css disabling option
|
297 |
+
|
298 |
+
= 1.4.0 =
|
299 |
+
* Updated help note for youtube
|
300 |
+
|
301 |
+
= 1.3.9 =
|
302 |
+
* Fixed youtube count to be fetched automatically using API v3
|
303 |
+
* Code cleanup done for shortcode
|
304 |
+
* Fixed small bug for facebook count on API limit reach
|
305 |
+
|
306 |
+
= 1.3.8 =
|
307 |
+
* Updated demo link
|
308 |
+
|
309 |
+
= 1.3.7 =
|
310 |
+
* Escaped the output to prevent XSS vulnerability on social profile section
|
311 |
+
|
312 |
+
|
313 |
+
= 1.3.6 =
|
314 |
+
* Updated note in social profiles section
|
315 |
+
* Updated rating link in settings header
|
316 |
+
|
317 |
+
= 1.3.5 =
|
318 |
+
* Removed font awesome dependency from frontend.css
|
319 |
+
* Fixed some css conflicts for anchor links color and hover color
|
320 |
+
* Added font awesome from CDN and removed the local file inclusion
|
321 |
+
* Updated notes in how to use section
|
322 |
+
|
323 |
+
= 1.3.4 =
|
324 |
+
* Added count="coma/short/default" parameter for count only shortcode
|
325 |
+
|
326 |
+
= 1.3.3 =
|
327 |
+
* Fixed small bug regarding youtube count
|
328 |
+
|
329 |
+
= 1.3.2 =
|
330 |
+
* Updated youtube note for subscribers count
|
331 |
+
|
332 |
+
= 1.3.1 =
|
333 |
+
* Added Facebook Default Count field for fallback count to show when API is not available
|
334 |
+
* Changed note for facebook user ID
|
335 |
+
* Fixed small bug regarding the individual social media count shortcode cache period
|
336 |
+
|
337 |
+
= 1.3.0 =
|
338 |
+
* Added Shortcode [aps-get-count social_media="name of social media"] to get the individual social media count only
|
339 |
+
|
340 |
+
= 1.2.0 =
|
341 |
+
* Updated Facebook API
|
342 |
+
* Added Youtube Subscribers field for mannual count
|
343 |
+
|
344 |
+
= 1.1.9 =
|
345 |
+
* Added some missed text domain
|
346 |
+
|
347 |
+
= 1.1.8 =
|
348 |
+
* Updated language file
|
349 |
+
|
350 |
+
= 1.1.7 =
|
351 |
+
* Fixed small issue for count format
|
352 |
+
|
353 |
+
= 1.1.6 =
|
354 |
+
* Updated some css for theme 5
|
355 |
+
|
356 |
+
= 1.1.5 =
|
357 |
+
* Updated some css for theme 4
|
358 |
+
|
359 |
+
= 1.1.4 =
|
360 |
+
* Updated some css for theme 2
|
361 |
+
|
362 |
+
= 1.1.3 =
|
363 |
+
* Updated some css for theme 1
|
364 |
+
|
365 |
+
= 1.1.2 =
|
366 |
+
* Updated some css for theme 3 for uniform width for all icons
|
367 |
+
|
368 |
+
= 1.1.1 =
|
369 |
+
* Added Serbo-Croatian Language
|
370 |
+
|
371 |
+
= 1.1.0 =
|
372 |
+
* Fixed the widget ID conflict
|
373 |
+
* Updated Facebook Counter Description in backend
|
374 |
+
|
375 |
+
= 1.0.9 =
|
376 |
+
* Fixed some mismatched text domain
|
377 |
+
|
378 |
+
= 1.0.8 =
|
379 |
+
* Fixed the issue of opening the posts and comments links opening in new link for firefox and IE
|
380 |
+
|
381 |
+
= 1.0.7 =
|
382 |
+
* Added Counter Format Option
|
383 |
+
|
384 |
+
= 1.0.6 =
|
385 |
+
* Done few changes in backend social profiles
|
386 |
+
|
387 |
+
= 1.0.5 =
|
388 |
+
* Done small update in upgrade banner
|
389 |
+
|
390 |
+
= 1.0.4 =
|
391 |
+
* Added Upgrade Side banner
|
392 |
+
|
393 |
+
= 1.0.3 =
|
394 |
+
* Added Theme Selection Feature in widget
|
395 |
+
|
396 |
+
= 1.0.2 =
|
397 |
+
* Done number formatting for counts
|
398 |
+
|
399 |
+
= 1.0.1 =
|
400 |
+
* Done some fixes for mobile version
|
401 |
+
|
402 |
+
= 1.0.0 =
|
403 |
+
* Plugin submitted to http://wordpress.org for review and approval
|
404 |
+
* Plugin approved in http://wordpress.org and comitted in plugin repository
|
405 |
+
|
406 |
+
== Upgrade Notice ==
|
407 |
There is an update available for the AccessPress Social Counter Plugin.Please update to recieve new updates and bug fixes.
|