PluginProbe ʕ •ᴥ•ʔ
Jetpack – WP Security, Backup, Speed, & Growth / 8.6.1
Jetpack – WP Security, Backup, Speed, & Growth v8.6.1
15.9-a.7 15.9-a.5 15.9-a.3 15.9-a.1 15.8 15.8-beta 15.8-a.7 15.8-a.5 5.2.5 5.3.4 5.4.4 5.5.5 5.6.5 5.7.5 5.8.4 5.9.4 6.0.4 6.1 6.1.1 6.1.2 6.1.3 6.1.4 6.1.5 6.2 6.2.1 6.2.2 6.2.3 6.2.4 6.2.5 6.3 6.3.1 6.3.2 6.3.3 6.3.4 6.3.5 6.3.6 6.3.7 6.4 6.4.1 6.4.2 6.4.3 6.4.4 6.4.5 6.4.6 6.5 6.5.1 6.5.2 6.5.3 6.5.4 6.6 6.6.1 6.6.2 6.6.3 6.6.4 6.6.5 6.7 6.7.1 6.7.2 6.7.3 6.7.4 6.8 6.8.1 6.8.2 6.8.3 6.8.4 6.8.5 6.9 6.9.1 6.9.2 6.9.3 6.9.4 7.0 7.0.1 7.0.2 7.0.3 7.0.4 7.0.5 7.1 7.1.1 7.1.2 7.1.3 7.1.4 7.1.5 7.2 7.2.1 7.2.1.1 7.2.2 7.2.3 7.2.4 7.2.5 7.3 7.3.0.1 7.3.1 7.3.1.1 7.3.2 7.3.3 7.3.4 7.3.5 7.4 7.4.1 7.4.2 7.4.3 7.4.4 7.4.5 7.5 7.5.0.1 7.5.1 7.5.2 7.5.3 7.5.4 7.5.5 7.5.6 7.5.7 7.6 7.6.1 7.6.2 7.6.3 7.6.4 7.7 7.7.1 7.7.2 7.7.3 7.7.4 7.7.5 7.7.6 7.8 7.8.1 7.8.2 7.8.3 7.8.4 7.9 7.9.1 7.9.2 7.9.3 7.9.4 8.0 8.0.1 8.0.2 8.0.3 8.1 8.1.1 8.1.2 8.1.3 8.1.4 8.2 8.2.0.1 8.2.1 8.2.2 8.2.3 8.2.4 8.2.5 8.2.6 8.3 8.3.1 8.3.2 8.3.3 8.4 8.4.1 8.4.2 8.4.3 8.4.4 8.4.5 8.5 8.5.1 8.5.2 8.5.3 8.6 8.6.1 8.6.2 8.6.3 8.6.4 8.7 8.7.0.1 8.7.1 8.7.2 8.7.3 8.7.4 8.8 8.8.1 8.8.2 8.8.3 8.8.4 8.8.5 8.9 8.9.1 8.9.2 8.9.3 8.9.4 9.0 9.0.1 9.0.2 9.0.3 9.0.4 9.0.5 9.1 9.1.1 9.1.2 9.1.3 9.2 9.2.1 9.2.2 9.2.3 9.2.4 9.3 9.3.1 9.3.2 9.3.3 9.3.4 9.3.5 9.4 9.4.1 9.4.2 9.4.3 9.4.4 9.5 9.5.1 9.5.2 9.5.3 9.5.4 9.5.5 9.6 9.6.1 9.6.2 9.6.3 9.6.4 9.7 9.7.1 9.7.2 15.7-beta.2 9.7.3 15.7.1 9.8 15.8-a.1 9.8.1 15.8-a.3 9.8.2 2.0.9 9.8.3 2.1.7 9.9 2.2.10 9.9.1 2.3.10 9.9.2 2.4.7 9.9.3 2.5.5 2.6.6 2.7.5 2.8.5 2.9.6 3.0.6 3.1.5 3.2.5 3.3.6 3.4.6 3.5.6 3.6.4 3.7.5 3.8.5 3.9.10 4.0.7 4.1.4 4.2.5 4.3.5 4.4.5 4.5.3 4.6.3 4.7.4 4.8.5 4.9.3 5.0.3 5.1.4 trunk 10.0 10.0.1 10.0.2 10.1 10.1.1 10.1.2 10.2 10.2.1 10.2.2 10.2.3 10.3 10.3.1 10.3.2 10.4 10.4.1 10.4.2 10.5 10.5.1 10.5.2 10.5.3 10.6 10.6.1 10.6.2 10.7 10.7.1 10.7.2 10.8 10.8.1 10.8.2 10.9 10.9.1 10.9.2 10.9.3 11.0 11.0.1 11.0.2 11.1 11.1.1 11.1.2 11.1.3 11.1.4 11.2 11.2.1 11.2.2 11.3 11.3.1 11.3.2 11.3.3 11.3.4 11.4 11.4.1 11.4.2 11.5 11.5.1 11.5.2 11.5.3 11.6 11.6.1 11.6.2 11.7 11.7.1 11.7.2 11.7.3 11.8 11.8.3 11.8.4 11.8.5 11.8.6 11.9 11.9.1 11.9.2 11.9.3 12.0 12.0.1 12.0.2 12.1 12.1.1 12.1.2 12.2 12.2.1 12.2.2 12.3 12.3.1 12.4 12.4.1 12.5 12.5.1 12.6 12.6.1 12.6.2 12.6.3 12.7 12.7.1 12.7.2 12.8 12.8.1 12.8.2 12.9 12.9.1 12.9.2 12.9.3 12.9.4 13.0 13.0.1 13.1 13.1.1 13.1.2 13.1.3 13.1.4 13.2 13.2.1 13.2.2 13.2.3 13.3 13.3.1 13.3.2 13.4 13.4.1 13.4.2 13.4.3 13.4.4 13.5 13.5.1 13.6 13.6.1 13.7 13.7.1 13.8 13.8.1 13.8.2 13.9 13.9.1 14.0 14.1 14.2 14.2.1 14.3 14.4 14.4.1 14.5 14.6 14.7 14.8 14.9 14.9.1 15.0 15.0.1 15.0.2 15.1 15.1.1 15.2 15.3 15.3.1 15.4 15.5 15.6 15.7 15.7-a.1 15.7-a.3 15.7-a.5 15.7-a.7 15.7-beta
jetpack / modules / shortcodes.php
jetpack / modules Last commit date
calypsoify 6 years ago carousel 6 years ago comment-likes 7 years ago comments 6 years ago contact-form 6 years ago custom-css 6 years ago custom-post-types 6 years ago geo-location 6 years ago google-analytics 6 years ago infinite-scroll 6 years ago lazy-images 6 years ago likes 6 years ago markdown 6 years ago masterbar 6 years ago memberships 6 years ago photon 6 years ago photon-cdn 6 years ago plugin-search 7 years ago post-by-email 6 years ago protect 6 years ago publicize 6 years ago pwa 6 years ago related-posts 6 years ago scan 6 years ago search 6 years ago seo-tools 6 years ago sharedaddy 6 years ago shortcodes 6 years ago simple-payments 6 years ago site-icon 6 years ago sitemaps 6 years ago sso 6 years ago subscriptions 6 years ago theme-tools 6 years ago tiled-gallery 6 years ago verification-tools 6 years ago videopress 6 years ago widget-visibility 6 years ago widgets 6 years ago woocommerce-analytics 6 years ago wordads 6 years ago wpcom-block-editor 6 years ago wpcom-tos 6 years ago .eslintrc.js 6 years ago after-the-deadline.php 7 years ago carousel.php 7 years ago comment-likes.php 6 years ago comments.php 6 years ago contact-form.php 7 years ago copy-post.php 6 years ago custom-content-types.php 6 years ago custom-css.php 7 years ago enhanced-distribution.php 9 years ago geo-location.php 7 years ago google-analytics.php 8 years ago gravatar-hovercards.php 6 years ago infinite-scroll.php 6 years ago json-api.php 9 years ago latex.php 6 years ago lazy-images.php 6 years ago likes.php 6 years ago markdown.php 9 years ago masterbar.php 7 years ago minileven.php 6 years ago mobile-push.php 10 years ago module-extras.php 6 years ago module-headings.php 6 years ago module-info.php 6 years ago monitor.php 6 years ago notes.php 6 years ago photon-cdn.php 6 years ago photon.php 6 years ago plugin-search.php 6 years ago post-by-email.php 6 years ago protect.php 6 years ago publicize.php 6 years ago pwa.php 6 years ago related-posts.php 7 years ago search.php 6 years ago seo-tools.php 7 years ago sharedaddy.php 6 years ago shortcodes.php 6 years ago shortlinks.php 7 years ago sitemaps.php 7 years ago sso.php 6 years ago stats.php 6 years ago subscriptions.php 6 years ago theme-tools.php 6 years ago tiled-gallery.php 7 years ago vaultpress.php 7 years ago verification-tools.php 7 years ago videopress.php 7 years ago widget-visibility.php 7 years ago widgets.php 7 years ago woocommerce-analytics.php 6 years ago wordads.php 7 years ago wpgroho.js 6 years ago
shortcodes.php
197 lines
1 <?php
2
3 /**
4 * Module Name: Shortcode Embeds
5 * Module Description: Shortcodes are WordPress-specific markup that let you add media from popular sites. This feature is no longer necessary as the editor now handles media embeds rather gracefully.
6 * Sort Order: 3
7 * First Introduced: 1.1
8 * Major Changes In: 1.2
9 * Requires Connection: No
10 * Auto Activate: No
11 * Module Tags: Photos and Videos, Social, Writing, Appearance
12 * Feature: Writing
13 * Additional Search Queries: shortcodes, shortcode, embeds, media, bandcamp, dailymotion, facebook, flickr, google calendars, google maps, google+, polldaddy, recipe, recipes, scribd, slideshare, slideshow, slideshows, soundcloud, ted, twitter, vimeo, vine, youtube
14 */
15
16 /**
17 * Transforms the $atts array into a string that the old functions expected
18 *
19 * The old way was:
20 * [shortcode a=1&b=2&c=3] or [shortcode=1]
21 * This is parsed as array( a => '1&b=2&c=3' ) and array( 0 => '=1' ), which is useless
22 *
23 * @param array $params Array of old shortcode parameters.
24 * @param bool $old_format_support true if [shortcode=foo] format is possible.
25 *
26 * @return string $params
27 */
28 function shortcode_new_to_old_params( $params, $old_format_support = false ) {
29 $str = '';
30
31 if ( $old_format_support && isset( $params[0] ) ) {
32 $str = ltrim( $params[0], '=' );
33 } elseif ( is_array( $params ) ) {
34 foreach ( array_keys( $params ) as $key ) {
35 if ( ! is_numeric( $key ) ) {
36 $str = $key . '=' . $params[ $key ];
37 }
38 }
39 }
40
41 return str_replace( array( '&amp;', '&#038;' ), '&', $str );
42 }
43
44 /**
45 * Load all available Jetpack shortcode files.
46 */
47 function jetpack_load_shortcodes() {
48 $shortcode_includes = array();
49
50 foreach ( Jetpack::glob_php( dirname( __FILE__ ) . '/shortcodes' ) as $file ) {
51 $filename = substr( basename( $file ), 0, -4 );
52
53 $shortcode_includes[ $filename ] = $file;
54 }
55
56 /**
57 * This filter allows other plugins to override which shortcodes Jetpack loads.
58 *
59 * Fires as part of the `plugins_loaded` WP hook, so modifying code needs to be in a plugin, not in a theme's functions.php.
60 *
61 * @module shortcodes
62 *
63 * @since 2.2.1
64 * @since 4.2.0 Added filename without extension as array key.
65 *
66 * @param array $shortcode_includes An array of which shortcodes to include.
67 */
68 $shortcode_includes = apply_filters( 'jetpack_shortcodes_to_include', $shortcode_includes );
69
70 foreach ( $shortcode_includes as $include ) {
71 include_once $include;
72 }
73 }
74
75 /**
76 * Runs preg_replace so that replacements don't happen within open tags.
77 * Parameters are the same as preg_replace, with an added optional search param for improved performance
78 *
79 * @param string $pattern Pattern to search for.
80 * @param string $replacement String to replace.
81 * @param string $content Post content.
82 * @param string $search String to search for.
83 *
84 * @return string $content Replaced post content.
85 */
86 function jetpack_preg_replace_outside_tags( $pattern, $replacement, $content, $search = null ) {
87 if ( $search && false === strpos( $content, $search ) ) {
88 return $content;
89 }
90
91 $textarr = wp_html_split( $content );
92 unset( $content );
93 foreach ( $textarr as &$element ) {
94 if ( '' === $element || '<' === $element[0] ) {
95 continue;
96 }
97 $element = preg_replace( $pattern, $replacement, $element );
98 }
99
100 return join( $textarr );
101 }
102
103 /**
104 * Runs preg_replace_callback so that replacements don't happen within open tags.
105 * Parameters are the same as preg_replace, with an added optional search param for improved performance.
106 *
107 * @param string $pattern Pattern to search for.
108 * @param string $callback Callback returning the replacement string.
109 * @param string $content Post content.
110 * @param string $search String to search for.
111 *
112 * @return string $content Replaced post content.
113 */
114 function jetpack_preg_replace_callback_outside_tags( $pattern, $callback, $content, $search = null ) {
115 if ( $search && false === strpos( $content, $search ) ) {
116 return $content;
117 }
118
119 $textarr = wp_html_split( $content );
120 unset( $content );
121 foreach ( $textarr as &$element ) {
122 if ( '' === $element || '<' === $element[0] ) {
123 continue;
124 }
125 $element = preg_replace_callback( $pattern, $callback, $element );
126 }
127
128 return join( $textarr );
129 }
130
131 if ( ! function_exists( 'jetpack_shortcode_get_wpvideo_id' ) ) {
132 /**
133 * Get VideoPress ID from wpvideo shortcode attributes.
134 *
135 * @param array $atts Shortcode attributes.
136 * @return int $id VideoPress ID.
137 */
138 function jetpack_shortcode_get_wpvideo_id( $atts ) {
139 if ( isset( $atts[0] ) ) {
140 return $atts[0];
141 } else {
142 return 0;
143 }
144 }
145 }
146
147 if ( ! function_exists( 'jetpack_shortcode_get_videopress_id' ) ) {
148 /**
149 * Get VideoPress ID from videopress shortcode attributes.
150 *
151 * @param array $atts Shortcode attributes.
152 * @return int $id VideoPress ID.
153 */
154 function jetpack_shortcode_get_videopress_id( $atts ) {
155 if ( isset( $atts[0] ) ) {
156 return $atts[0];
157 } else {
158 return 0;
159 }
160 }
161 }
162
163 /**
164 * Common element attributes parsing and sanitizing for src, width and height.
165 *
166 * @since 4.5.0
167 *
168 * @param array $attrs With original values.
169 *
170 * @return array $attrs With sanitized values.
171 */
172 function wpcom_shortcodereverse_parseattr( $attrs ) {
173 $defaults = array(
174 'src' => false,
175 'width' => false,
176 'height' => false,
177 );
178
179 $attrs = shortcode_atts( $defaults, $attrs );
180
181 $attrs['src'] = strip_tags( $attrs['src'] ); // For sanity
182 $attrs['width'] = ( is_numeric( $attrs['width'] ) ) ? abs( intval( $attrs['width'] ) ) : $defaults['width'];
183 $attrs['height'] = ( is_numeric( $attrs['height'] ) ) ? abs( intval( $attrs['height'] ) ) : $defaults['height'];
184
185 return $attrs;
186 }
187
188 /**
189 * When an embed service goes away, we can use this handler
190 * to output a link for history's sake.
191 */
192 function jetpack_deprecated_embed_handler( $matches, $attr, $url ) {
193 return sprintf( '<a href="%s">%s</a>', esc_url( $url ), esc_html( esc_url( $url ) ) );
194 }
195
196 jetpack_load_shortcodes();
197