'1&b=2&c=3' ) and array( 0 => '=1' ), which is useless * * @param Array $params * @param Bool $old_format_support true if [shortcode=foo] format is possible. * @return String $params */ function shortcode_new_to_old_params( $params, $old_format_support = false ) { $str = ''; if ( $old_format_support && isset( $params[0] ) ) { $str = ltrim( $params[0], '=' ); } elseif ( is_array( $params ) ) { foreach ( array_keys( $params ) as $key ) { if ( ! is_numeric( $key ) ) $str = $key . '=' . $params[$key]; } } return str_replace( array( '&', '&' ), '&', $str ); } function jetpack_load_shortcodes() { global $wp_version; $shortcode_includes = array(); foreach ( Jetpack::glob_php( dirname( __FILE__ ) . '/shortcodes' ) as $file ) { $shortcode_includes[] = $file; } /** * This filter allows other plugins to override which shortcodes Jetpack loads. * * @module shortcodes * * @since 2.2.1 * * @param array $shortcode_includes An array of which shortcodes to include. */ $shortcode_includes = apply_filters( 'jetpack_shortcodes_to_include', $shortcode_includes ); foreach ( $shortcode_includes as $include ) { if ( version_compare( $wp_version, '3.6-z', '>=' ) && stristr( $include, 'audio.php' ) ) { continue; } include $include; } } /** * Runs preg_replace so that replacements don't happen within open tags. * Parameters are the same as preg_replace, with an added optional search param for improved performance * * @param String $pattern * @param String $replacement * @param String $content * @param String $search * @return String $content */ function jetpack_preg_replace_outside_tags( $pattern, $replacement, $content, $search = null ) { if( ! function_exists( 'wp_html_split' ) ) { return $content; } if ( $search && false === strpos( $content, $search ) ) { return $content; } $textarr = wp_html_split( $content ); unset( $content ); foreach( $textarr as &$element ) { if ( '' === $element || '<' === $element{0} ) continue; $element = preg_replace( $pattern, $replacement, $element ); } return join( $textarr ); } /** * Runs preg_replace_callback so that replacements don't happen within open tags. * Parameters are the same as preg_replace, with an added optional search param for improved performance * * @param String $pattern * @param String $replacement * @param String $content * @param String $search * @return String $content */ function jetpack_preg_replace_callback_outside_tags( $pattern, $callback, $content, $search = null ) { if( ! function_exists( 'wp_html_split' ) ) { return $content; } if ( $search && false === strpos( $content, $search ) ) { return $content; } $textarr = wp_html_split( $content ); unset( $content ); foreach( $textarr as &$element ) { if ( '' === $element || '<' === $element{0} ) continue; $element = preg_replace_callback( $pattern, $callback, $element ); } return join( $textarr ); } global $wp_version; if ( version_compare( $wp_version, '3.6-z', '>=' ) ) { add_filter( 'shortcode_atts_audio', 'jetpack_audio_atts_handler', 10, 3 ); function jetpack_audio_atts_handler( $out, $pairs, $atts ) { if( isset( $atts[0] ) ) $out['src'] = $atts[0]; return $out; } function jetpack_shortcode_get_audio_id( $atts ) { if ( isset( $atts[ 0 ] ) ) return $atts[ 0 ]; else return 0; } } if ( ! function_exists( 'jetpack_shortcode_get_wpvideo_id' ) ) { function jetpack_shortcode_get_wpvideo_id( $atts ) { if ( isset( $atts[ 0 ] ) ) return $atts[ 0 ]; else return 0; } } jetpack_load_shortcodes();