/** * Remove all Wr shortcodes from content * @param string $content * @return string Content without shortcode tags */ public static function remove_wr_shortcodes($content) { global $wr_megamenu_shortcodes; $wr_shortcode_tags = !empty($wr_megamenu_shortcodes) ? $wr_megamenu_shortcodes : WR_Megamenu_Helpers_Shortcode::wr_mm_shortcode_tags(); $tagnames = array_keys($wr_shortcode_tags); $tagregexp = join('|', array_map('preg_quote', $tagnames)); // replace opening tag $regex = '\\[' . '(\\[?)' . "({$tagregexp})" . '(?![\\w-])' . '( ' . '[^\\]\\/]*' . '(?:' . '\\/(?!\\])' . '[^\\]\\/]*' . ' )*?' . ' )' . '(?:' . '(\\/)' . '\\]' . '|' . '\\]' . ' )' . '(\\]?)'; // 6: Optional second closing brocket for escaping shortcodes: [[tag]] $content = preg_replace("/{$regex}/s", '<p>', $content); // replace closing tag $regex = "\\[\\/({$tagregexp})\\]"; $content = preg_replace("/{$regex}/s", '</p>', $content); // remove redundant p tag $content = preg_replace('/(<p>)+/', '<p>', $content); $content = preg_replace('/(<\\/p>)+/', '</p>', $content); $content = preg_replace('/(<p>\\s*<\\/p>)+/', '', $content); return $content; }