Use strip_shortcodes
as well. That should remove the shortcodes from the content.
A couple of notes: Your code seems to be doing some things that I don’t understand. For example, you run the the_content
filter on your content which adds markup, only to run strip_tags
later, which removes (at least some of) that markup. strip_tags
will strip the <script>
and <style>
tags too, yet you have individual preg_replace
s for those. Also, markup left by strip_tags
, such as <p>
tags, will count against your character limit. And, since you are breaking on a space you may end up breaking in the middle of a tag and end up with bad markup. This:
<p>Test paragraph.</p><!-- Comment --> <a href="#fragment">Other text</a>
May end up being …
<p>Test paragraph.</p><!-- Comment --> <a
You might look into something like wp_filter_nohtml_kses
, and certainly rethink how you deal with spaces and the broken markup that is bound to happen with this function.