WordPress Share Buttons Plugin – AddThis - Version 4.0.2

Version Description

  • Control inline share buttons for each page/post
  • Bug fixes
Download this release

Release Info

Developer srijith.v
Plugin Icon 128x128 WordPress Share Buttons Plugin – AddThis
Version 4.0.2
Comparing to
See all releases

Code changes from version 4.0.1 to 4.0.2

addthis-for-wordpress.php CHANGED
@@ -73,6 +73,9 @@ class Addthis_Wordpress
73
 
74
  /** Addthis Profile id **/
75
  private $_pubid;
 
 
 
76
 
77
  /**
78
  * Initializes the plugin.
@@ -83,11 +86,16 @@ class Addthis_Wordpress
83
  * */
84
  public function __construct($upgrade)
85
  {
 
 
86
  $this->_upgrade = $upgrade;
87
  $this->_getVariables = $_GET;
88
  $this->_postVariables = $_POST;
 
89
 
90
- $this->_pubid = self::getPubid();
 
 
91
 
92
  include_once 'addthis-toolbox.php';
93
  new Addthis_ToolBox;
@@ -162,7 +170,7 @@ class Addthis_Wordpress
162
  $updateResult = null;
163
 
164
  if ($this->_checkAddPubid()) {
165
- $updateResult = $this->updatePubid($this->_postVariables['pubid']);
166
  }
167
  wp_enqueue_script(
168
  'addThisScript',
@@ -182,13 +190,18 @@ class Addthis_Wordpress
182
  *
183
  * @return string
184
  */
185
- public function updatePubid($pubId)
186
  {
187
- global $addthis_addjs;
188
- $addthis_addjs->setProfileId($pubId);
189
- $this->_pubid = $pubId;
 
 
 
 
 
190
  return "<div class='addthis_updated wrap'>".
191
- "AddThis Profile ID updated successfully!!!".
192
  "</div>";
193
  }
194
 
@@ -206,6 +219,16 @@ class Addthis_Wordpress
206
  return null;
207
  }
208
  }
 
 
 
 
 
 
 
 
 
 
209
 
210
  /**
211
  * Get referer url
@@ -252,6 +275,26 @@ class Addthis_Wordpress
252
 
253
  return $successReturn;
254
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
255
 
256
  /**
257
  * Check pubid from addthis failure
@@ -465,6 +508,7 @@ class Addthis_Wordpress
465
  $html .= "<input type='text' value='".$pubId."' ".
466
  "name='pubid' id='addthis-pubid'/>";
467
  $html .= "</div></div>";
 
468
  $submitButtonValue = "Confirm and Save";
469
 
470
  if (isset($this->_getVariables['advanced_settings'])) {
73
 
74
  /** Addthis Profile id **/
75
  private $_pubid;
76
+
77
+ /** Addthis Settings **/
78
+ private $_options;
79
 
80
  /**
81
  * Initializes the plugin.
86
  * */
87
  public function __construct($upgrade)
88
  {
89
+ // Save async load settings via ajax request
90
+ add_action( 'wp_ajax_at_async_loading', array($this, 'addthisAsyncLoading'));
91
  $this->_upgrade = $upgrade;
92
  $this->_getVariables = $_GET;
93
  $this->_postVariables = $_POST;
94
+ $this->_options = $this->getSettings();
95
 
96
+ $this->_pubid = (isset($this->_options)
97
+ && isset($this->_options['profile']))
98
+ ? $this->_options['profile'] : null;
99
 
100
  include_once 'addthis-toolbox.php';
101
  new Addthis_ToolBox;
170
  $updateResult = null;
171
 
172
  if ($this->_checkAddPubid()) {
173
+ $updateResult = $this->updateSettings($this->_postVariables);
174
  }
175
  wp_enqueue_script(
176
  'addThisScript',
190
  *
191
  * @return string
192
  */
193
+ public function updateSettings($settings)
194
  {
195
+ if(isset($settings['pubid'])){
196
+ $this->_options['profile'] = $settings['pubid'];
197
+ }
198
+ if(isset($settings['async_loading'])){
199
+ $this->_options['addthis_asynchronous_loading'] = $settings['async_loading'];
200
+ }
201
+ update_option('addthis_settings', $this->_options);
202
+ $this->_pubid = $this->_options['profile'];
203
  return "<div class='addthis_updated wrap'>".
204
+ "AddThis Profile Settings updated successfully!!!".
205
  "</div>";
206
  }
207
 
219
  return null;
220
  }
221
  }
222
+
223
+ /**
224
+ * Get addthis settings array
225
+ *
226
+ * @return string
227
+ */
228
+ public function getSettings()
229
+ {
230
+ return get_option('addthis_settings');
231
+ }
232
 
233
  /**
234
  * Get referer url
275
 
276
  return $successReturn;
277
  }
278
+
279
+ /**
280
+ * Check if there is request to update async loading
281
+ *
282
+ * @return boolean
283
+ */
284
+ private function _checkAsyncLoading()
285
+ {
286
+ $successReturn = isset ($this->_postVariables['async_loading']);
287
+
288
+ return $successReturn;
289
+ }
290
+
291
+ public function addthisAsyncLoading()
292
+ {
293
+ if ($this->_checkAsyncLoading()) {
294
+ $updateResult = $this->updateSettings($this->_postVariables);
295
+ }
296
+ die; //exit from the ajax request
297
+ }
298
 
299
  /**
300
  * Check pubid from addthis failure
508
  $html .= "<input type='text' value='".$pubId."' ".
509
  "name='pubid' id='addthis-pubid'/>";
510
  $html .= "</div></div>";
511
+
512
  $submitButtonValue = "Confirm and Save";
513
 
514
  if (isset($this->_getVariables['advanced_settings'])) {
addthis-toolbox.php CHANGED
@@ -49,12 +49,20 @@ class Addthis_ToolBox
49
  const AT_BELOW_POST_PAGE = "at-below-post-page";
50
  const AT_ABOVE_POST = "at-above-post";
51
  const AT_BELOW_POST = "at-below-post";
 
 
 
 
52
  const AT_CONTENT_BELOW_POST_HOME = "at-below-post-homepage-recommended";
53
  const AT_CONTENT_BELOW_POST_PAGE = "at-below-post-page-recommended";
54
  const AT_CONTENT_BELOW_POST = "at-below-post-recommended";
 
 
55
  const AT_CONTENT_ABOVE_POST_HOME = "at-above-post-homepage-recommended";
56
  const AT_CONTENT_ABOVE_POST_PAGE = "at-above-post-page-recommended";
57
  const AT_CONTENT_ABOVE_POST = "at-above-post-recommended";
 
 
58
 
59
  /**
60
  * Initializes the widget class.
@@ -62,7 +70,7 @@ class Addthis_ToolBox
62
  public function __construct()
63
  {
64
  add_filter('the_content', array($this, 'addWidget'));
65
- if ( has_excerpt()) {
66
  add_filter('the_excerpt', array($this, 'addWidget'));
67
  } else {
68
  add_filter('get_the_excerpt', array($this, 'addWidget'));
@@ -78,26 +86,51 @@ class Addthis_ToolBox
78
  */
79
  public function addWidget($content)
80
  {
81
- if (Addthis_Wordpress::getPubid()) {
 
 
 
82
  if (is_home() || is_front_page()) {
83
- $content = self::_buildDiv(self::AT_ABOVE_POST_HOME) .
84
- self::_buildDiv(self::AT_CONTENT_ABOVE_POST_HOME) .
85
- $content;
86
- $content .= self::_buildDiv(self::AT_BELOW_POST_HOME);
87
- $content .= self::_buildDiv(self::AT_CONTENT_BELOW_POST_HOME);
 
 
88
  } else if (is_page()) {
89
- $content = self::_buildDiv(self::AT_ABOVE_POST_PAGE) .
90
- self::_buildDiv(self::AT_CONTENT_ABOVE_POST_PAGE) .
91
- $content;
92
- $content .= self::_buildDiv(self::AT_BELOW_POST_PAGE);
93
- $content .= self::_buildDiv(self::AT_CONTENT_BELOW_POST_PAGE);
 
 
94
  } else if (is_single()) {
95
- $content = self::_buildDiv(self::AT_ABOVE_POST) .
96
- self::_buildDiv(self::AT_CONTENT_ABOVE_POST) .
97
- $content;
98
- $content .= self::_buildDiv(self::AT_BELOW_POST);
99
- $content .= self::_buildDiv(self::AT_CONTENT_BELOW_POST);
100
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
101
  }
102
 
103
  return $content;
@@ -114,7 +147,7 @@ class Addthis_ToolBox
114
  {
115
  $title = get_the_title();
116
  $url = get_permalink();
117
- return "<div class='".$class." addthis-toolbox'".
118
  " data-title='".$title."' data-url='".$url."'>".
119
  "</div>";
120
  }
49
  const AT_BELOW_POST_PAGE = "at-below-post-page";
50
  const AT_ABOVE_POST = "at-above-post";
51
  const AT_BELOW_POST = "at-below-post";
52
+ const AT_ABOVE_POST_CAT_PAGE = "at-above-post-cat-page";
53
+ const AT_BELOW_POST_CAT_PAGE = "at-below-post-cat-page";
54
+ const AT_ABOVE_POST_ARCH_PAGE = "at-above-post-arch-page";
55
+ const AT_BELOW_POST_ARCH_PAGE = "at-below-post-arch-page";
56
  const AT_CONTENT_BELOW_POST_HOME = "at-below-post-homepage-recommended";
57
  const AT_CONTENT_BELOW_POST_PAGE = "at-below-post-page-recommended";
58
  const AT_CONTENT_BELOW_POST = "at-below-post-recommended";
59
+ const AT_CONTENT_BELOW_CAT_PAGE = "at-below-post-cat-page-recommended";
60
+ const AT_CONTENT_BELOW_ARCH_PAGE = "at-below-post-arch-page-recommended";
61
  const AT_CONTENT_ABOVE_POST_HOME = "at-above-post-homepage-recommended";
62
  const AT_CONTENT_ABOVE_POST_PAGE = "at-above-post-page-recommended";
63
  const AT_CONTENT_ABOVE_POST = "at-above-post-recommended";
64
+ const AT_CONTENT_ABOVE_CAT_PAGE = "at-above-post-cat-page-recommended";
65
+ const AT_CONTENT_ABOVE_ARCH_PAGE = "at-above-post-arch-page-recommended";
66
 
67
  /**
68
  * Initializes the widget class.
70
  public function __construct()
71
  {
72
  add_filter('the_content', array($this, 'addWidget'));
73
+ if ( has_excerpt()) {
74
  add_filter('the_excerpt', array($this, 'addWidget'));
75
  } else {
76
  add_filter('get_the_excerpt', array($this, 'addWidget'));
86
  */
87
  public function addWidget($content)
88
  {
89
+ if (Addthis_Wordpress::getPubid() && !is_404()) {
90
+ global $post;
91
+ $postid = $post->ID;
92
+ $at_flag = get_post_meta( $postid, '_at_widget', TRUE );
93
  if (is_home() || is_front_page()) {
94
+ if($at_flag == '' || $at_flag == '1'){
95
+ $content = self::_buildDiv(self::AT_ABOVE_POST_HOME) .
96
+ self::_buildDiv(self::AT_CONTENT_ABOVE_POST_HOME) .
97
+ $content;
98
+ $content .= self::_buildDiv(self::AT_BELOW_POST_HOME);
99
+ $content .= self::_buildDiv(self::AT_CONTENT_BELOW_POST_HOME);
100
+ }
101
  } else if (is_page()) {
102
+ if($at_flag == '' || $at_flag == '1'){
103
+ $content = self::_buildDiv(self::AT_ABOVE_POST_PAGE) .
104
+ self::_buildDiv(self::AT_CONTENT_ABOVE_POST_PAGE) .
105
+ $content;
106
+ $content .= self::_buildDiv(self::AT_BELOW_POST_PAGE);
107
+ $content .= self::_buildDiv(self::AT_CONTENT_BELOW_POST_PAGE);
108
+ }
109
  } else if (is_single()) {
110
+ if($at_flag == '' || $at_flag == '1'){
111
+ $content = self::_buildDiv(self::AT_ABOVE_POST) .
112
+ self::_buildDiv(self::AT_CONTENT_ABOVE_POST) .
113
+ $content;
114
+ $content .= self::_buildDiv(self::AT_BELOW_POST);
115
+ $content .= self::_buildDiv(self::AT_CONTENT_BELOW_POST);
116
+ }
117
+ } else if (is_category()) {
118
+ if($at_flag == '' || $at_flag == '1'){
119
+ $content = self::_buildDiv(self::AT_ABOVE_POST_CAT_PAGE) .
120
+ self::_buildDiv(self::AT_CONTENT_ABOVE_CAT_PAGE) .
121
+ $content;
122
+ $content .= self::_buildDiv(self::AT_BELOW_POST_CAT_PAGE);
123
+ $content .= self::_buildDiv(self::AT_CONTENT_BELOW_CAT_PAGE);
124
+ }
125
+ } else if (is_archive()) {
126
+ if($at_flag == '' || $at_flag == '1'){
127
+ $content = self::_buildDiv(self::AT_ABOVE_POST_ARCH_PAGE) .
128
+ self::_buildDiv(self::AT_CONTENT_ABOVE_ARCH_PAGE) .
129
+ $content;
130
+ $content .= self::_buildDiv(self::AT_BELOW_POST_ARCH_PAGE);
131
+ $content .= self::_buildDiv(self::AT_CONTENT_BELOW_ARCH_PAGE);
132
+ }
133
+ }
134
  }
135
 
136
  return $content;
147
  {
148
  $title = get_the_title();
149
  $url = get_permalink();
150
+ return "<div class='".$class." addthis-toolbox at-wordpress-hide'".
151
  " data-title='".$title."' data-url='".$url."'>".
152
  "</div>";
153
  }
addthis_social_widget.php CHANGED
@@ -23,7 +23,7 @@
23
  * Plugin Name: AddThis for WordPress
24
  * Plugin URI: http://www.addthis.com
25
  * Description: Use the AddThis suite of website tools which includes sharing, following, recommended content, and conversion tools to help you make your website smarter. With AddThis, you can see how your users are engaging with your content, provide a personalized experience for each user and encourage them to share, subscribe or follow.
26
- * Version: 4.0.1
27
  *
28
  * Author: The AddThis Team
29
  * Author URI: http://www.addthis.com/blog
@@ -32,8 +32,8 @@ if (!defined('ADDTHIS_INIT')) define('ADDTHIS_INIT', 1);
32
  else return;
33
 
34
  define( 'addthis_style_default' , 'fb_tw_p1_sc');
35
- define( 'ADDTHIS_PLUGIN_VERSION' , '4.0');
36
- define( 'ADDTHIS_PRODUCT_VERSION' , 'wpp-4.0');
37
  define( 'ADDTHIS_ATVERSION', '300');
38
  define( 'ADDTHIS_ATVERSION_MANUAL_UPDATE', -1);
39
  define( 'ADDTHIS_ATVERSION_AUTO_UPDATE', 0);
23
  * Plugin Name: AddThis for WordPress
24
  * Plugin URI: http://www.addthis.com
25
  * Description: Use the AddThis suite of website tools which includes sharing, following, recommended content, and conversion tools to help you make your website smarter. With AddThis, you can see how your users are engaging with your content, provide a personalized experience for each user and encourage them to share, subscribe or follow.
26
+ * Version: 4.0.2
27
  *
28
  * Author: The AddThis Team
29
  * Author URI: http://www.addthis.com/blog
32
  else return;
33
 
34
  define( 'addthis_style_default' , 'fb_tw_p1_sc');
35
+ define( 'ADDTHIS_PLUGIN_VERSION' , '4.0.2');
36
+ define( 'ADDTHIS_PRODUCT_VERSION' , 'wpp-4.0.2');
37
  define( 'ADDTHIS_ATVERSION', '300');
38
  define( 'ADDTHIS_ATVERSION_MANUAL_UPDATE', -1);
39
  define( 'ADDTHIS_ATVERSION_AUTO_UPDATE', 0);
css/style.css CHANGED
@@ -228,7 +228,7 @@ a.addthis_configure, a.addthis_configure:hover {
228
  margin-right: 25px;
229
  padding: 3px;
230
  text-align: center;
231
- width: 155px;
232
  text-decoration: none;
233
  font-size: inherit;
234
  line-height: none;
@@ -248,3 +248,12 @@ a.addthis_configure, a.addthis_configure:hover {
248
  .addthis_confirm_div input[type="text"] {
249
  font-size: 12px;
250
  }
 
 
 
 
 
 
 
 
 
228
  margin-right: 25px;
229
  padding: 3px;
230
  text-align: center;
231
+ width: 160px;
232
  text-decoration: none;
233
  font-size: inherit;
234
  line-height: none;
248
  .addthis_confirm_div input[type="text"] {
249
  font-size: 12px;
250
  }
251
+
252
+ .addthis_async {
253
+ border: 0px solid gray;
254
+ width: 180px;
255
+ }
256
+
257
+ .hide {
258
+ visibility: hidden;
259
+ }
includes/addthis_addjs_new.php CHANGED
@@ -63,6 +63,11 @@ Class AddThis_addjs{
63
  // In order for our wp_footer magic to work, we need to sometimes add our stuff
64
  add_action('init', array($this, 'maybe_add_footer_comment'));
65
 
 
 
 
 
 
66
 
67
  // Footer
68
  if ( isset($this->_options['wpfooter']) && $this->_options['wpfooter'])
@@ -151,15 +156,12 @@ Class AddThis_addjs{
151
  }
152
 
153
  function addWidgetToJs(){
154
- $addthis_settings_options = get_option('addthis_settings');
155
- $addthis_asynchronous_loading = (isset($addthis_settings_options['addthis_asynchronous_loading']))?$addthis_settings_options['addthis_asynchronous_loading']:false;
156
- if(isset($addthis_asynchronous_loading) && $addthis_asynchronous_loading) {
157
- $this->jsToAdd .= '<script type="text/javascript" src="//s7.addthis.com/js/'.$this->atversion.'/addthis_widget.js#pubid='. urlencode( $this->pubid ).'&async=1"></script>';
158
- //$this->jsToAdd .= '<script type="text/javascript" src="http://cache-dev.addthis.com/cachefly/js/300/addthis_widget.js&async=1"></script>';
159
  $this->jsToAdd .= '<script type="text/javascript">jQuery(document).ready(function($) { addthis.init(); }); </script>';
160
- } else {
161
- //$this->jsToAdd .= '<script type="text/javascript" src="http://cache-dev.addthis.com/cachefly/js/300/addthis_widget.js#pubid='. urlencode( $this->pubid ).'"></script>';
162
- $this->jsToAdd .= '<script type="text/javascript" src="//s7.addthis.com/js/'.$this->atversion.'/addthis_widget.js#pubid='. urlencode( $this->pubid ).'"></script>';
163
  }
164
  }
165
 
@@ -192,4 +194,34 @@ Class AddThis_addjs{
192
  }
193
  return null;
194
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
195
  }
63
  // In order for our wp_footer magic to work, we need to sometimes add our stuff
64
  add_action('init', array($this, 'maybe_add_footer_comment'));
65
 
66
+ // for adding option for show/hide addthis sharing button in admin post add/edit page.
67
+ add_action('admin_init', array($this, 'register_post_at_flag'));
68
+
69
+ // for saving custom field value for show/hide addthis sharing button in admin post add/edit page.
70
+ add_action('save_post', array($this, 'save_at_flag'));
71
 
72
  // Footer
73
  if ( isset($this->_options['wpfooter']) && $this->_options['wpfooter'])
156
  }
157
 
158
  function addWidgetToJs(){
159
+ if (!is_404()) {
160
+ //Load addthis script only if the page is not 404
161
+ $addthis_settings_options = get_option('addthis_settings');
162
+ $addthis_asynchronous_loading = (isset($addthis_settings_options['addthis_asynchronous_loading']))?$addthis_settings_options['addthis_asynchronous_loading']:false;
163
+ $this->jsToAdd .= '<script type="text/javascript" src="//s7.addthis.com/js/'.$this->atversion.'/addthis_widget.js#pubid='. urlencode( $this->pubid ).'" async="async"></script>';
164
  $this->jsToAdd .= '<script type="text/javascript">jQuery(document).ready(function($) { addthis.init(); }); </script>';
 
 
 
165
  }
166
  }
167
 
194
  }
195
  return null;
196
  }
197
+
198
+ /*
199
+ * Function to add checkbox to show/hide Addthis sharing buttons in admin post add/edit page.
200
+ */
201
+ public function register_post_at_flag() {
202
+ add_meta_box('at_widget', __('AddThis For Wordpress'), array($this, 'add_at_flag_meta_box'), 'post', 'advanced', 'high');
203
+ add_meta_box('at_widget', __('AddThis For Wordpress'), array($this, 'add_at_flag_meta_box'), 'page', 'advanced', 'high');
204
+ }
205
+ /*
206
+ * Function to add checkbox to show/hide Addthis sharing buttons in admin post add/edit page.
207
+ */
208
+ public function add_at_flag_meta_box($post){
209
+ $at_flag = get_post_meta($post->ID, '_at_widget', true);
210
+ echo "<label for='_at_widget'>".__('Show AddThis Sharing buttons: ', 'foobar')."</label>";
211
+ if($at_flag == '' || $at_flag == '1'){
212
+ echo "<input type='checkbox' name='_at_widget' id='at_widget' value='1' checked='checked'/>";
213
+ } else if($at_flag == '0'){
214
+ echo "<input type='checkbox' name='_at_widget' id='at_widget' value='1'/>";
215
+ }
216
+ }
217
+ /*
218
+ * Function to save the value of checkbox to show/hide Addthis sharing buttons in admin post add/edit page.
219
+ */
220
+ function save_at_flag(){
221
+ global $post;
222
+ if(isset($_POST['_at_widget']))
223
+ update_post_meta($post->ID, '_at_widget', $_POST['_at_widget']);
224
+ else
225
+ update_post_meta($post->ID, '_at_widget', '0');
226
+ }
227
  }
js/addthis-for-wordpress.js CHANGED
@@ -23,4 +23,17 @@ jQuery(document).ready(function($) {
23
  jQuery(this).attr('title', 'Please fill Profile Id');
24
  }
25
  });
 
 
 
 
 
 
 
 
 
 
 
 
 
26
  });
23
  jQuery(this).attr('title', 'Please fill Profile Id');
24
  }
25
  });
26
+
27
+ jQuery('#async_load').change(function(){
28
+
29
+ var syncLoad = jQuery(this).is(':checked')?1:0;
30
+ var data = {
31
+ action: "at_async_loading",
32
+ async_loading: syncLoad
33
+ };
34
+ jQuery('.at-loader').css('visibility', 'visible');
35
+ jQuery.post(ajaxurl, data, function(response){
36
+ jQuery('.at-loader').css('visibility', 'hidden');
37
+ });
38
+ });
39
  });
readme.txt CHANGED
@@ -3,7 +3,7 @@ Contributors: srijith.v, solchea, _mjk_, addthis_paul, abramsm
3
  Tags: AddThis, addtoany, bookmark, bookmarking, email, e-mail, sharing buttons, share, share this, facebook, google+, pinterest, instagram, linkedin, whatsapp, social tools, website tools, twitter, content marketing, recommended content, conversion tool, subscription button, conversion tools, email tools, ecommerce tools, social marketing, personalization tools
4
  Requires at least: 3.0
5
  Tested up to: 4.1
6
- Stable tag: 4.0.1
7
 
8
  AddThis provides the best sharing, social, recommended content, and conversion tools to help you make
9
  your website smarter.
@@ -82,6 +82,10 @@ PHP 5+ is preferred; PHP 4 is supported.
82
 
83
  == Changelog ==
84
 
 
 
 
 
85
  = 4.0.1 =
86
  * Frictionless integration with AddThis Dashboard.
87
 
@@ -275,6 +279,11 @@ Fixed nondeterministic bug with the_title(), causing the title to occasionally a
275
 
276
 
277
  == Upgrade Notice ==
 
 
 
 
 
278
  = 4.0.1 =
279
  * Fix for automatically converting profile types to Wordpress type.
280
 
3
  Tags: AddThis, addtoany, bookmark, bookmarking, email, e-mail, sharing buttons, share, share this, facebook, google+, pinterest, instagram, linkedin, whatsapp, social tools, website tools, twitter, content marketing, recommended content, conversion tool, subscription button, conversion tools, email tools, ecommerce tools, social marketing, personalization tools
4
  Requires at least: 3.0
5
  Tested up to: 4.1
6
+ Stable tag: 4.0.2
7
 
8
  AddThis provides the best sharing, social, recommended content, and conversion tools to help you make
9
  your website smarter.
82
 
83
  == Changelog ==
84
 
85
+ = 4.0.2 =
86
+ * Control inline share buttons for each page/post
87
+ * Bug fixes
88
+
89
  = 4.0.1 =
90
  * Frictionless integration with AddThis Dashboard.
91
 
279
 
280
 
281
  == Upgrade Notice ==
282
+
283
+ = 4.0.2 =
284
+ * Control inline share buttons for each page/post
285
+ * Bug fixes
286
+
287
  = 4.0.1 =
288
  * Fix for automatically converting profile types to Wordpress type.
289