unwelcome side effects
-
Hi,
I just installed and started to use your plugin but I quickly discovered it was messing with the formatting on some pages even tho I don’t use the shortcode on those.
So I took look at the code and saw this:
remove_filter( 'the_content', 'wpautop' ); add_filter('the_content', 'wpautop' , 99); add_filter('the_content', 'shortcode_unautop',100 );
So that means a lot of things that didn’t go through wpautop before are now being reformatted. That includes every shortcodes.
There’s a much better solution that I found here: http://bit.ly/1LM05R1 and that inspired me to find a much better solution. Here’s the modified markdown_shortcode.php that I am using:
include('parsedown/Parsedown.php'); include('parsedown/ParsedownExtra.php'); $markdown_shortcode_content = array(); function markdown_shortcode($attr, $content = null) { global $markdown_shortcode_content; $content = $markdown_shortcode_content[$content]; $content = undo_html_entities($content); $content = trim($content); $content = underscores_to_spaces($content); $extra = new ParsedownExtra(); $parsed_content = $extra->text($content); return $parsed_content; } add_shortcode('markdown', 'markdown_shortcode'); function markdown_shortcode_pre($attr, $content = null) { global $markdown_shortcode_content; $key = md5($content); $markdown_shortcode_content[$key] = $content; return "[markdown]{$key}[/markdown]"; } function markdown_shortcode_preprocess($content) { global $shortcode_tags; // Backup current registered shortcodes and clear them all out $orig_shortcode_tags = $shortcode_tags; $shortcode_tags = array(); add_shortcode('markdown', 'markdown_shortcode_pre'); // Do the shortcode (only the one above is registered) $content = do_shortcode($content); // Put the original shortcodes back $shortcode_tags = $orig_shortcode_tags; return $content; } add_filter('the_content', 'markdown_shortcode_preprocess', 1); // Reverts changes that were applied by the Visual editor function undo_html_entities($content){ $content = str_replace("<", "<", $content); $content = str_replace(">", ">", $content); $content = str_replace("&", "&", $content); return $content; } // Replaces more than one underscore to same amount of spaces function underscores_to_spaces($content) { $content = preg_replace_callback('/_{2,}/', function ($matches) { return str_replace('_', ' ', $matches[0]); }, $content); return $content; } function init_highlight() { wp_enqueue_style("highlight", plugin_dir_url(__FILE__) . 'highlight/styles/github.css'); wp_enqueue_script("highlight", plugin_dir_url(__FILE__) . 'highlight/highlight.min.js'); wp_enqueue_script("highlight_init", plugin_dir_url(__FILE__) . 'init_highlight.js'); } add_action('init', 'init_highlight');
Also, I don’t know why you added that last part, the code doesn’t tell but I think you should at least document that side effect or just don’t do it if you can avoid it (I removed it).
// Stop WordPress converting quotes to pretty quotes (nobody will miss them) remove_filter('the_content', 'wptexturize');
also, you should prefix all your methods with a unique prefix or use an object because you’re going to create conflicts.
Hope that helps
- The topic ‘unwelcome side effects’ is closed to new replies.