Advanced Excerpt - Version 4.2.3

Version Description

  • Fix: The "Remove all tags except the following" wasn't excluding tags as expected
  • Fix: Call remove_all_filter() on the the_excerpt hook to improve excerpt rendering
  • Fix: Only honor the "Only filter the_content() when there's no break (<!--more-->) tag in the post content" setting when hooking into the_content filter
  • Improvement: Improve backwards compatibility by reverting back to using get_the_content() for the base excerpt text
  • Improvement: Added the advanced_excerpt_skip_excerpt_filtering filter allowing users to skip excerpt filtering on a per excerpt basis
Download this release

Release Info

Developer FancyThemes
Plugin Icon wp plugin Advanced Excerpt
Version 4.2.3
Comparing to
See all releases

Code changes from version 4.2.2 to 4.2.3

advanced-excerpt.php CHANGED
@@ -3,12 +3,12 @@
3
  Plugin Name: Advanced Excerpt
4
  Plugin URI: http://wordpress.org/plugins/advanced-excerpt/
5
  Description: Control the appearance of WordPress post excerpts
6
- Version: 4.2.2
7
  Author: Delicious Brains
8
  Author URI: http://deliciousbrains.com/
9
  */
10
 
11
- $GLOBALS['advanced_excerpt_version'] = '4.2.2';
12
 
13
  function advanced_excerpt_load_textdomain() {
14
  load_plugin_textdomain( 'advanced-excerpt', false, dirname( plugin_basename( __FILE__ ) ) . '/languages/' );
3
  Plugin Name: Advanced Excerpt
4
  Plugin URI: http://wordpress.org/plugins/advanced-excerpt/
5
  Description: Control the appearance of WordPress post excerpts
6
+ Version: 4.2.3
7
  Author: Delicious Brains
8
  Author URI: http://deliciousbrains.com/
9
  */
10
 
11
+ $GLOBALS['advanced_excerpt_version'] = '4.2.3';
12
 
13
  function advanced_excerpt_load_textdomain() {
14
  load_plugin_textdomain( 'advanced-excerpt', false, dirname( plugin_basename( __FILE__ ) ) . '/languages/' );
class/advanced-excerpt.php CHANGED
@@ -26,6 +26,7 @@ class Advanced_Excerpt {
26
 
27
  public $options_basic_tags; // Basic HTML tags (determines which tags are in the checklist by default)
28
  public $options_all_tags; // Almost all HTML tags (extra options)
 
29
 
30
  function __construct( $plugin_file_path ) {
31
  $this->load_options();
@@ -90,11 +91,12 @@ class Advanced_Excerpt {
90
 
91
  if ( 1 == $this->options['the_excerpt'] ) {
92
  remove_all_filters( 'get_the_excerpt' );
93
- add_filter( 'get_the_excerpt', array( $this, 'filter' ) );
 
94
  }
95
 
96
  if ( 1 == $this->options['the_content'] ) {
97
- add_filter( 'the_content', array( $this, 'filter' ) );
98
  }
99
  }
100
 
@@ -203,53 +205,59 @@ class Advanced_Excerpt {
203
  return $links;
204
  }
205
 
206
- function filter( $text ) {
207
- global $post;
 
 
 
 
 
 
 
 
 
208
  extract( wp_parse_args( $this->options, $this->default_options ), EXTR_SKIP );
209
- $original_excerpt = $text;
210
 
211
- // Avoid custom excerpts
212
- if ( !empty( $text ) && !$no_custom ) {
213
- return $text;
 
 
 
 
214
  }
215
 
216
- // Get the full content and filter it
217
- $text = $post->post_content;
218
- if ( 1 == $no_shortcode ) {
219
- $text = strip_shortcodes( $text );
220
  }
221
 
222
  // prevent recursion on 'the_content' hook
223
  $content_has_filter = false;
224
- if ( has_filter( 'the_content', array( $this, 'filter' ) ) ) {
225
- remove_filter( 'the_content', array( $this, 'filter' ) );
226
  $content_has_filter = true;
227
  }
228
 
 
229
  $text = apply_filters( 'the_content', $text );
230
 
231
  // add our filter back in
232
  if ( $content_has_filter ) {
233
- add_filter( 'the_content', array( $this, 'filter' ) );
234
- }
235
-
236
- if ( $the_content_no_break && false !== strpos( $text, '<!--more-->' ) ) {
237
- return $original_excerpt;
238
  }
239
 
240
  // From the default wp_trim_excerpt():
241
  // Some kind of precaution against malformed CDATA in RSS feeds I suppose
242
  $text = str_replace( ']]>', ']]&gt;', $text );
243
 
244
- $original_post_content = $text;
245
-
246
- // Determine allowed tags
247
  if ( empty( $allowed_tags ) ) {
248
- $allowed_tags = $this->options_all_tags;
249
  }
250
 
 
251
  if ( ! empty( $exclude_tags ) ) {
252
- $allowed_tags = array_diff( $allowed_tags, $exclude_tags );
253
  }
254
 
255
  // Strip HTML if $allowed_tags_option is set to 'remove_all_tags_except'
@@ -259,14 +267,17 @@ class Advanced_Excerpt {
259
  } else {
260
  $tag_string = '';
261
  }
 
262
  $text = strip_tags( $text, $tag_string );
263
  }
264
 
 
 
265
  // Create the excerpt
266
  $text = $this->text_excerpt( $text, $length, $length_type, $finish );
267
 
268
  // Add the ellipsis or link
269
- if ( !apply_filters( 'advanced_excerpt_disable_add_more', false, $original_post_content, $this->options ) ) {
270
  $text = $this->text_add_more( $text, $ellipsis, ( $add_link ) ? $read_more : false );
271
  }
272
 
26
 
27
  public $options_basic_tags; // Basic HTML tags (determines which tags are in the checklist by default)
28
  public $options_all_tags; // Almost all HTML tags (extra options)
29
+ public $filter_type; // Determines wether we're filtering the_content or the_excerpt at any given time
30
 
31
  function __construct( $plugin_file_path ) {
32
  $this->load_options();
91
 
92
  if ( 1 == $this->options['the_excerpt'] ) {
93
  remove_all_filters( 'get_the_excerpt' );
94
+ remove_all_filters( 'the_excerpt' );
95
+ add_filter( 'get_the_excerpt', array( $this, 'filter_excerpt' ) );
96
  }
97
 
98
  if ( 1 == $this->options['the_content'] ) {
99
+ add_filter( 'the_content', array( $this, 'filter_content' ) );
100
  }
101
  }
102
 
205
  return $links;
206
  }
207
 
208
+ function filter_content( $content ) {
209
+ $this->filter_type = 'content';
210
+ return $this->filter( $content );
211
+ }
212
+
213
+ function filter_excerpt( $content ) {
214
+ $this->filter_type = 'excerpt';
215
+ return $this->filter( $content );
216
+ }
217
+
218
+ function filter( $content ) {
219
  extract( wp_parse_args( $this->options, $this->default_options ), EXTR_SKIP );
 
220
 
221
+ if ( true === apply_filters( 'advanced_excerpt_skip_excerpt_filtering', false ) ) {
222
+ return $content;
223
+ }
224
+
225
+ global $post;
226
+ if ( $the_content_no_break && false !== strpos( $post->post_content, '<!--more-->' ) && 'content' == $this->filter_type ) {
227
+ return $content;
228
  }
229
 
230
+ // Avoid custom excerpts
231
+ if ( !empty( $content ) && !$no_custom ) {
232
+ return $content;
 
233
  }
234
 
235
  // prevent recursion on 'the_content' hook
236
  $content_has_filter = false;
237
+ if ( has_filter( 'the_content', array( $this, 'filter_content' ) ) ) {
238
+ remove_filter( 'the_content', array( $this, 'filter_content' ) );
239
  $content_has_filter = true;
240
  }
241
 
242
+ $text = get_the_content( '' );
243
  $text = apply_filters( 'the_content', $text );
244
 
245
  // add our filter back in
246
  if ( $content_has_filter ) {
247
+ add_filter( 'the_content', array( $this, 'filter_content' ) );
 
 
 
 
248
  }
249
 
250
  // From the default wp_trim_excerpt():
251
  // Some kind of precaution against malformed CDATA in RSS feeds I suppose
252
  $text = str_replace( ']]>', ']]&gt;', $text );
253
 
 
 
 
254
  if ( empty( $allowed_tags ) ) {
255
+ $allowed_tags = array();
256
  }
257
 
258
+ // the $exclude_tags args takes precedence over the $allowed_tags args (only if they're both defined)
259
  if ( ! empty( $exclude_tags ) ) {
260
+ $allowed_tags = array_diff( $this->options_all_tags, $exclude_tags );
261
  }
262
 
263
  // Strip HTML if $allowed_tags_option is set to 'remove_all_tags_except'
267
  } else {
268
  $tag_string = '';
269
  }
270
+
271
  $text = strip_tags( $text, $tag_string );
272
  }
273
 
274
+ $text_before_trimming = $text;
275
+
276
  // Create the excerpt
277
  $text = $this->text_excerpt( $text, $length, $length_type, $finish );
278
 
279
  // Add the ellipsis or link
280
+ if ( !apply_filters( 'advanced_excerpt_disable_add_more', false, $text_before_trimming, $this->options ) ) {
281
  $text = $this->text_add_more( $text, $ellipsis, ( $add_link ) ? $read_more : false );
282
  }
283
 
functions/functions.php CHANGED
@@ -62,9 +62,10 @@ function the_advanced_excerpt( $args = '', $get = false ) {
62
  $advanced_excerpt->options = wp_parse_args( $args, $advanced_excerpt->options );
63
 
64
  // Ensure our filter is hooked, regardless of the page type
65
- if ( ! has_filter( 'get_the_excerpt', array( $advanced_excerpt, 'filter' ) ) ) {
66
  remove_all_filters( 'get_the_excerpt' );
67
- add_filter( 'get_the_excerpt', array( $advanced_excerpt, 'filter' ) );
 
68
  }
69
 
70
  if ( $get ) {
62
  $advanced_excerpt->options = wp_parse_args( $args, $advanced_excerpt->options );
63
 
64
  // Ensure our filter is hooked, regardless of the page type
65
+ if ( ! has_filter( 'get_the_excerpt', array( $advanced_excerpt, 'filter_excerpt' ) ) ) {
66
  remove_all_filters( 'get_the_excerpt' );
67
+ remove_all_filters( 'the_excerpt' );
68
+ add_filter( 'get_the_excerpt', array( $advanced_excerpt, 'filter_excerpt' ) );
69
  }
70
 
71
  if ( $get ) {
readme.txt CHANGED
@@ -1,145 +1,157 @@
1
- === Advanced Excerpt ===
2
- Contributors: bradt, aprea
3
- Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=5VPMGLLK94XJC
4
- Tags: excerpt, post, content, formatting
5
- Requires at least: 3.2
6
- Tested up to: 3.9
7
- Stable tag: 4.2.2
8
- License: GPLv3
9
-
10
- Control the appearance of WordPress post excerpts
11
-
12
- == Description ==
13
-
14
- This plugin adds several improvements to WordPress' default way of creating excerpts.
15
-
16
- 1. Keeps HTML markup in the excerpt (and you get to choose which tags are included)
17
- 2. Trims the excerpt to a given length using either character count or word count
18
- 3. Only the 'real' text is counted (HTML is ignored but kept)
19
- 4. Customizes the excerpt length and the ellipsis character that are used
20
- 5. Completes the last word or sentence in an excerpt (no weird cuts)
21
- 6. Adds a *read-more* link to the text
22
- 7. Ignores custom excerpts and use the generated one instead
23
- 8. Theme developers can use `the_advanced_excerpt()` for even more control (see the FAQ)
24
-
25
- Most of the above features are optional and/or can be customized by the user or theme developer.
26
-
27
- Interested in contributing to Advanced Excerpt? Please visit https://github.com/deliciousbrains/wp-advanced-excerpt
28
-
29
- See [our wiki](https://github.com/deliciousbrains/wp-advanced-excerpt/wiki) for additional documentation.
30
-
31
- Banner image credit - [chillihead](https://www.flickr.com/photos/chillihead/)
32
-
33
- Original plugin author - [basvd](http://profiles.wordpress.org/basvd)
34
-
35
- == Installation ==
36
-
37
- 1. Use WordPress' built-in installer
38
- 2. Access the "Excerpt" menu option under Settings
39
-
40
- == Frequently Asked Questions ==
41
-
42
- = What's an excerpt? =
43
-
44
- A short version of a post that is usually displayed wherever the whole post would be too much (eg. search results, news feeds, archives). You can write them yourself, but if you don't, WordPress will make a very basic one instead.
45
-
46
- = Why do I need this plugin? =
47
-
48
- The default excerpt created by WordPress removes all HTML. If your theme uses `the_excerpt()` or `the_content()` to view excerpts, they might look weird because of this (smilies are removed, lists are flattened, etc.) This plugin fixes that and also gives you more control over excerpts.
49
-
50
- = Does it work for WordPress version x.x.x? =
51
-
52
- During development, the plugin is tested with the most recent version(s) of WordPress. It might work on older versions, but it's better to just keep your installation up-to-date.
53
-
54
- = Is this plugin available in my language? / How do I translate this plugin? =
55
-
56
- Advanced Excerpt is internationalization (i18n) friendly. If you'd like to contribute a translation for your language please do so by opening a [pull request](https://github.com/deliciousbrains/wp-advanced-excerpt).
57
-
58
- = Does this plugin support multibyte characters, such as Chinese? =
59
-
60
- Before 4.1, multibyte characters were supported directly by this plugin. This feature has been removed because it added irrelevant code for a 'problem' that isn't actually specific to the plugin.
61
-
62
- If you require multibyte character support on your website, you can [override the default text operations](http://www.php.net/manual/en/mbstring.overload.php) in PHP.
63
-
64
- = Can I manually call the filter in my WP theme or plugin? =
65
-
66
- The plugin automatically hooks on `the_excerpt()` and `the_content()` functions and uses the parameters specified in the options panel.
67
-
68
- If you want to call the filter with different options, you can use `the_advanced_excerpt()` template tag provided by this plugin. This tag accepts [query-string-style parameters](http://codex.wordpress.org/Template_Tags/How_to_Pass_Tag_Parameters#Tags_with_query-string-style_parameters) (theme developers will be familiar with this notation).
69
-
70
- The following parameters can be set:
71
-
72
- * `length`, an integer that determines the length of the excerpt
73
- * `length_type`, enumeration, if set to `words` the excerpt length will be in words; if set to `characters` the excerpt length will be in characters
74
- * `no_custom`, if set to `1`, an excerpt will be generated even if the post has a custom excerpt; if set to `0`, the custom excerpt will be used
75
- * `no_shortcode`, if set to `1`, shortcodes are removed from the excerpt; if set to `0`, shortcodes will be parsed
76
- * `finish`, enumeration, if set to `exact` the excerpt will be the exact lenth as defined by the "Excerpt Length" option. If set to `word` the last word in the excerpt will be completed. If set to `sentence` the last sentence in the excerpt will be completed.
77
- * `ellipsis`, the string that will substitute the omitted part of the post; if you want to use HTML entities in the string, use `%26` instead of the `&` prefix to avoid breaking the query
78
- * `read_more`, the text used in the read-more link
79
- * `add_link`, if set to `1`, the read-more link will be appended; if `0`, no link will be added
80
- * `allowed_tags`, a comma-separated list of HTML tags that are allowed in the excerpt. Entering `_all` will preserve all tags.
81
- * `exclude_tags`, a comma-separated list of HTML tags that must be removed from the excerpt. Using this setting in combination with `allowed_tags` makes no sense
82
-
83
- A custom advanced excerpt call could look like this:
84
-
85
- `the_advanced_excerpt('length=320&length_type=words&no_custom=1&ellipsis=%26hellip;&exclude_tags=img,p,strong');`
86
-
87
- = Does this plugin work outside the Loop? =
88
-
89
- No, this plugin fetches the post from The Loop and there is currently no way to pass a post ID or any custom input to it.
90
- However, you can [start The Loop manually](http://codex.wordpress.org/The_Loop#Multiple_Loops) and apply the plugin as usual.
91
-
92
- == Screenshots ==
93
-
94
- 1. The options page
95
- 2. An example of an excerpt generated by the plugin
96
-
97
- == Changelog ==
98
-
99
- = 4.2.2 =
100
- * Fix: The `the_advanced_excerpt()` function was not working on singular page types (pages / posts)
101
-
102
- = 4.2.1 =
103
- * Fix: Undefined index errors when using the `the_advanced_excerpt()` function
104
- * Fix: Not excluding tags when using the `exclude_tags` argument in the `the_advanced_excerpt()` function
105
-
106
- = 4.2 =
107
- * Feature: Toggle excerpt filtering when there's no break (<!--more-->) tag in the post content
108
- * Feature: Toggle excerpt filtering for the `the_excerpt()` and `the_content()` functions
109
- * Feature: Toggle excerpt filtering on certain page types
110
- * Improvement: Added HTML5 tags to the allowed tags list
111
- * Improvement: Options are now automatically removed from `wp_options` when the plugin is deleted from the dashboard
112
- * Improvement: Added several WordPress filters, allowing developers to extend/modify the default functionality of the plugin
113
- * Improvement: Additional strings were made i18n friendly
114
- * Improvement: All options are now stored in one row in wp_options rather than one row per option
115
- * Improvement: Several UI elements have be reworded and styled differently to improve user experience
116
- * Fix: Now works with themes using `the_content()` on archive pages (i.e. WordPress default themes and others)
117
- * Fix: Notices/warning were appearing when the options were saved while having a checkbox option unchecked
118
- * Fix: The "Read More" link was being incorrectly appended into certain HTML tags, e.g. table tags and list tags
119
-
120
- = 4.1 =
121
- * Fix: Template function with custom options works again
122
- * Fix: Data before header bug (retro-fixed in 4.0)
123
- * Feature: Template function also works with array-style parameters
124
- * Removed multibyte support
125
- * Removed PHP 4 support (WP 3.2+ users should be fine, others should update)
126
- * Better code testing before release!
127
-
128
- = 4.0 =
129
- * Feature: Brand new parsing algorithm which should resolve some running time issues
130
- * Feature: Options to finish a word or sentence before cutting the excerpt
131
- * Fix: A few small bugs
132
-
133
- = 3.1 =
134
-
135
- * Fix: A few bugs with custom and character-based excerpts
136
-
137
- = 3.0 =
138
-
139
- * First major release since 0.2.2 (also removed the `0.` prefix from the version number)
140
- * Feature: Shortcodes can be removed from the excerpt
141
- * Feature: Virtually any HTML tag may now be stripped
142
- * Feature: A read-more link with custom text can be added
143
- * Fix: Word-based excerpt speed improved
144
- * Fix: Template tag function improved
145
- * Fix: Better ellipsis placement
 
 
 
 
 
 
 
 
 
 
 
 
1
+ === Advanced Excerpt ===
2
+ Contributors: fancythemes
3
+ Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=5VPMGLLK94XJC
4
+ Tags: post excerpt, excerpt, post, content, formatting
5
+ Requires at least: 3.2
6
+ Tested up to: 4.0
7
+ Stable tag: 4.2.3
8
+ License: GPLv3
9
+
10
+ Control the appearance of WordPress post excerpts
11
+
12
+ == Description ==
13
+
14
+ This plugin adds several improvements to WordPress' default way of creating excerpts.
15
+
16
+ 1. Keeps HTML markup in the excerpt (and you get to choose which tags are included)
17
+ 2. Trims the excerpt to a given length using either character count or word count
18
+ 3. Only the 'real' text is counted (HTML is ignored but kept)
19
+ 4. Customizes the excerpt length and the ellipsis character that are used
20
+ 5. Completes the last word or sentence in an excerpt (no weird cuts)
21
+ 6. Adds a *read-more* link to the text
22
+ 7. Ignores custom excerpts and use the generated one instead
23
+ 8. Theme developers can use `the_advanced_excerpt()` for even more control (see the FAQ)
24
+
25
+ Most of the above features are optional and/or can be customized by the user or theme developer.
26
+
27
+ Interested in contributing to Advanced Excerpt? Please visit https://github.com/deliciousbrains/wp-advanced-excerpt
28
+
29
+ See [our wiki](https://github.com/deliciousbrains/wp-advanced-excerpt/wiki) for additional documentation.
30
+
31
+ Banner image credit - [chillihead](https://www.flickr.com/photos/chillihead/)
32
+
33
+ Original plugin author - [basvd](http://profiles.wordpress.org/basvd)
34
+
35
+ **Useful Resources**
36
+
37
+ - <a href="https://fancythemes.com/what-is-wordpress/" rel="friend">What is WordPress</a>
38
+ - <a href="https://fancythemes.com/wordpress-themes" rel="friend">Fee Themes</a> and <a href="https://fancythemes.com/wordpress-plugins/" rel="friend">plugins</a>
39
+
40
+ == Installation ==
41
+
42
+ 1. Use WordPress' built-in installer
43
+ 2. Access the "Excerpt" menu option under Settings
44
+
45
+ == Frequently Asked Questions ==
46
+
47
+ = What's an excerpt? =
48
+
49
+ A short version of a post that is usually displayed wherever the whole post would be too much (eg. search results, news feeds, archives). You can write them yourself, but if you don't, WordPress will make a very basic one instead.
50
+
51
+ = Why do I need this plugin? =
52
+
53
+ The default excerpt created by WordPress removes all HTML. If your theme uses `the_excerpt()` or `the_content()` to view excerpts, they might look weird because of this (smilies are removed, lists are flattened, etc.) This plugin fixes that and also gives you more control over excerpts.
54
+
55
+ = Does it work for WordPress version x.x.x? =
56
+
57
+ During development, the plugin is tested with the most recent version(s) of WordPress. It might work on older versions, but it's better to just keep your installation up-to-date.
58
+
59
+ = Is this plugin available in my language? / How do I translate this plugin? =
60
+
61
+ Advanced Excerpt is internationalization (i18n) friendly. If you'd like to contribute a translation for your language please do so by opening a [pull request](https://github.com/deliciousbrains/wp-advanced-excerpt).
62
+
63
+ = Does this plugin support multibyte characters, such as Chinese? =
64
+
65
+ Before 4.1, multibyte characters were supported directly by this plugin. This feature has been removed because it added irrelevant code for a 'problem' that isn't actually specific to the plugin.
66
+
67
+ If you require multibyte character support on your website, you can [override the default text operations](http://www.php.net/manual/en/mbstring.overload.php) in PHP.
68
+
69
+ = Can I manually call the filter in my WP theme or plugin? =
70
+
71
+ The plugin automatically hooks on `the_excerpt()` and `the_content()` functions and uses the parameters specified in the options panel.
72
+
73
+ If you want to call the filter with different options, you can use `the_advanced_excerpt()` template tag provided by this plugin. This tag accepts [query-string-style parameters](http://codex.wordpress.org/Template_Tags/How_to_Pass_Tag_Parameters#Tags_with_query-string-style_parameters) (theme developers will be familiar with this notation).
74
+
75
+ The following parameters can be set:
76
+
77
+ * `length`, an integer that determines the length of the excerpt
78
+ * `length_type`, enumeration, if set to `words` the excerpt length will be in words; if set to `characters` the excerpt length will be in characters
79
+ * `no_custom`, if set to `1`, an excerpt will be generated even if the post has a custom excerpt; if set to `0`, the custom excerpt will be used
80
+ * `no_shortcode`, if set to `1`, shortcodes are removed from the excerpt; if set to `0`, shortcodes will be parsed
81
+ * `finish`, enumeration, if set to `exact` the excerpt will be the exact lenth as defined by the "Excerpt Length" option. If set to `word` the last word in the excerpt will be completed. If set to `sentence` the last sentence in the excerpt will be completed.
82
+ * `ellipsis`, the string that will substitute the omitted part of the post; if you want to use HTML entities in the string, use `%26` instead of the `&` prefix to avoid breaking the query
83
+ * `read_more`, the text used in the read-more link
84
+ * `add_link`, if set to `1`, the read-more link will be appended; if `0`, no link will be added
85
+ * `allowed_tags`, a comma-separated list of HTML tags that are allowed in the excerpt. Entering `_all` will preserve all tags.
86
+ * `exclude_tags`, a comma-separated list of HTML tags that must be removed from the excerpt. Using this setting in combination with `allowed_tags` makes no sense
87
+
88
+ A custom advanced excerpt call could look like this:
89
+
90
+ `the_advanced_excerpt('length=320&length_type=words&no_custom=1&ellipsis=%26hellip;&exclude_tags=img,p,strong');`
91
+
92
+ = Does this plugin work outside the Loop? =
93
+
94
+ No, this plugin fetches the post from The Loop and there is currently no way to pass a post ID or any custom input to it.
95
+ However, you can [start The Loop manually](http://codex.wordpress.org/The_Loop#Multiple_Loops) and apply the plugin as usual.
96
+
97
+ == Screenshots ==
98
+
99
+ 1. The options page
100
+ 2. An example of an excerpt generated by the plugin
101
+
102
+ == Changelog ==
103
+
104
+ = 4.2.3 =
105
+ * Fix: The "Remove all tags except the following" wasn't excluding tags as expected
106
+ * Fix: Call `remove_all_filter()` on the `the_excerpt` hook to improve excerpt rendering
107
+ * Fix: Only honor the "Only filter `the_content()` when there's no break (&lt;!--more--&gt;) tag in the post content" setting when hooking into `the_content` filter
108
+ * Improvement: Improve backwards compatibility by reverting back to using `get_the_content()` for the base excerpt text
109
+ * Improvement: Added the `advanced_excerpt_skip_excerpt_filtering` filter allowing users to skip excerpt filtering on a per excerpt basis
110
+
111
+ = 4.2.2 =
112
+ * Fix: The `the_advanced_excerpt()` function was not working on singular page types (pages / posts)
113
+
114
+ = 4.2.1 =
115
+ * Fix: Undefined index errors when using the `the_advanced_excerpt()` function
116
+ * Fix: Not excluding tags when using the `exclude_tags` argument in the `the_advanced_excerpt()` function
117
+
118
+ = 4.2 =
119
+ * Feature: Toggle excerpt filtering when there's no break (&lt;!--more--&gt;) tag in the post content
120
+ * Feature: Toggle excerpt filtering for the `the_excerpt()` and `the_content()` functions
121
+ * Feature: Toggle excerpt filtering on certain page types
122
+ * Improvement: Added HTML5 tags to the allowed tags list
123
+ * Improvement: Options are now automatically removed from `wp_options` when the plugin is deleted from the dashboard
124
+ * Improvement: Added several WordPress filters, allowing developers to extend/modify the default functionality of the plugin
125
+ * Improvement: Additional strings were made i18n friendly
126
+ * Improvement: All options are now stored in one row in wp_options rather than one row per option
127
+ * Improvement: Several UI elements have be reworded and styled differently to improve user experience
128
+ * Fix: Now works with themes using `the_content()` on archive pages (i.e. WordPress default themes and others)
129
+ * Fix: Notices/warning were appearing when the options were saved while having a checkbox option unchecked
130
+ * Fix: The "Read More" link was being incorrectly appended into certain HTML tags, e.g. table tags and list tags
131
+
132
+ = 4.1 =
133
+ * Fix: Template function with custom options works again
134
+ * Fix: Data before header bug (retro-fixed in 4.0)
135
+ * Feature: Template function also works with array-style parameters
136
+ * Removed multibyte support
137
+ * Removed PHP 4 support (WP 3.2+ users should be fine, others should update)
138
+ * Better code testing before release!
139
+
140
+ = 4.0 =
141
+ * Feature: Brand new parsing algorithm which should resolve some running time issues
142
+ * Feature: Options to finish a word or sentence before cutting the excerpt
143
+ * Fix: A few small bugs
144
+
145
+ = 3.1 =
146
+
147
+ * Fix: A few bugs with custom and character-based excerpts
148
+
149
+ = 3.0 =
150
+
151
+ * First major release since 0.2.2 (also removed the `0.` prefix from the version number)
152
+ * Feature: Shortcodes can be removed from the excerpt
153
+ * Feature: Virtually any HTML tag may now be stripped
154
+ * Feature: A read-more link with custom text can be added
155
+ * Fix: Word-based excerpt speed improved
156
+ * Fix: Template tag function improved
157
+ * Fix: Better ellipsis placement