PluginProbe ʕ •ᴥ•ʔ
Jetpack – WP Security, Backup, Speed, & Growth / 14.7.1
Jetpack – WP Security, Backup, Speed, & Growth v14.7.1
12.0.3 12.1.3 12.2.3 12.3.2 12.4.2 12.5.2 12.6.4 12.7.3 12.8.3 12.9.5 13.0.2 13.1.5 13.2.4 13.3.3 13.4.5 13.5.2 13.6.2 13.7.2 13.8.3 13.9.2 14.0.1 14.1.1 14.2.2 14.3.1 14.4.2 14.5.1 14.6.1 14.7.1 14.8.1 14.9.2 15.0.3 15.1.2 15.2.1 15.3.2 15.4.1 15.5.1 15.6.1 15.7.2 15.8.1 15.9.2 16.0.2 16.1.3 16.2-a.5 16.2-a.3 16.1.2 16.2-a.1 16.1.1 16.1 16.1-beta 16.1-beta.2 16.1-beta.3 16.1-a.5 16.1-a.3 16.0.1 16.1-a.1 16.0 16.0-beta 16.0-a.7 16.0-a.5 15.9.1 16.0-a.3 16.0-a.1 15.9 15.9-beta 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
carousel 1 year ago comment-likes 1 year ago comments 1 year ago custom-post-types 1 year ago external-media 1 year ago google-fonts 1 year ago gravatar 6 years ago infinite-scroll 1 year ago likes 1 year ago markdown 1 year ago memberships 1 year ago photon-cdn 1 year ago plugin-search 1 year ago post-by-email 1 year ago related-posts 1 year ago scan 1 year ago seo-tools 1 year ago sharedaddy 1 year ago shortcodes 1 year ago simple-payments 1 year ago site-icon 2 years ago sitemaps 1 year ago stats 1 year ago subscriptions 1 year ago theme-tools 1 year ago tiled-gallery 1 year ago verification-tools 4 years ago videopress 1 year ago widget-visibility 1 year ago widgets 1 year ago woocommerce-analytics 1 year ago wordads 1 year ago wpcom-tos 5 years ago account-protection.php 1 year ago blaze.php 2 years ago blocks.php 1 year ago carousel.php 2 years ago comment-likes.php 2 years ago comments.php 2 years ago contact-form.php 1 year ago copy-post.php 1 year ago custom-content-types.php 1 year ago google-fonts.php 2 years ago gravatar-hovercards.php 2 years ago infinite-scroll.php 3 years ago json-api.php 5 years ago latex.php 4 years ago likes.php 1 year ago markdown.php 4 years ago module-extras.php 1 year ago module-headings.php 1 year ago module-info.php 1 year ago monitor.php 2 years ago notes.php 1 year ago photon-cdn.php 1 year ago photon.php 3 years ago plugin-search.php 1 year ago post-by-email.php 5 years ago post-list.php 4 years ago protect.php 2 years ago publicize.php 1 year ago related-posts.php 2 years ago search.php 4 years ago seo-tools.php 2 years ago sharedaddy.php 2 years ago shortcodes.php 1 year ago shortlinks.php 1 year ago sitemaps.php 1 year ago sso.php 1 year ago stats.php 1 year ago subscriptions.php 1 year ago theme-tools.php 1 year ago tiled-gallery.php 4 years ago vaultpress.php 2 years ago verification-tools.php 5 years ago videopress.php 4 years ago waf.php 1 year ago widget-visibility.php 4 years ago widgets.php 1 year ago woocommerce-analytics.php 2 years ago wordads.php 2 years ago wpgroho.js 1 year ago
shortcodes.php
212 lines
1 <?php
2 /**
3 * Module Name: Shortcode Embeds
4 * 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.
5 * Sort Order: 3
6 * First Introduced: 1.1
7 * Major Changes In: 1.2
8 * Requires Connection: No
9 * Auto Activate: No
10 * Module Tags: Photos and Videos, Social, Writing, Appearance
11 * Feature: Writing
12 * Additional Search Queries: shortcodes, shortcode, embeds, media, bandcamp, dailymotion, facebook, flickr, google calendars, google maps, polldaddy, recipe, recipes, scribd, slideshare, slideshow, slideshows, soundcloud, ted, twitter, vimeo, vine, youtube
13 *
14 * @package automattic/jetpack
15 */
16
17 /**
18 * Transforms the $atts array into a string that the old functions expected
19 *
20 * The old way was:
21 * [shortcode a=1&b=2&c=3] or [shortcode=1]
22 * This is parsed as array( a => '1&b=2&c=3' ) and array( 0 => '=1' ), which is useless
23 *
24 * @param array $params Array of old shortcode parameters.
25 * @param bool $old_format_support true if [shortcode=foo] format is possible.
26 *
27 * @return string $params
28 */
29 function shortcode_new_to_old_params( $params, $old_format_support = false ) {
30 $str = '';
31
32 if ( $old_format_support && isset( $params[0] ) ) {
33 $str = ltrim( $params[0], '=' );
34 } elseif ( is_array( $params ) ) {
35 foreach ( array_keys( $params ) as $key ) {
36 if ( ! is_numeric( $key ) ) {
37 $str = $key . '=' . $params[ $key ];
38 }
39 }
40 }
41
42 return str_replace( array( '&amp;', '&#038;' ), '&', $str );
43 }
44
45 /**
46 * Load all available Jetpack shortcode files.
47 */
48 function jetpack_load_shortcodes() {
49 // Prevent third-party shortcode plugins when loading shortcode files.
50 // Format: shortcode => condition_when_to_skip
51 $shortcode_skips = array(
52 'soundcloud' => function_exists( 'soundcloud_shortcode' ), // SoundCloud Shortcodes plugin
53 );
54
55 $shortcode_includes = array();
56
57 foreach ( Jetpack::glob_php( __DIR__ . '/shortcodes' ) as $file ) {
58 $filename = substr( basename( $file ), 0, -4 );
59
60 if ( empty( $shortcode_skips[ $filename ] ) ) {
61 $shortcode_includes[ $filename ] = $file;
62 }
63 }
64
65 /**
66 * This filter allows other plugins to override which shortcodes Jetpack loads.
67 *
68 * Fires as part of the `after_setup_theme` WP hook, so modifying code needs to be in a plugin, not in a theme's functions.php.
69 *
70 * @module shortcodes
71 *
72 * @since 2.2.1
73 * @since 4.2.0 Added filename without extension as array key.
74 *
75 * @param array $shortcode_includes An array of which shortcodes to include.
76 */
77 $shortcode_includes = apply_filters( 'jetpack_shortcodes_to_include', $shortcode_includes );
78
79 foreach ( $shortcode_includes as $include ) {
80 include_once $include;
81 }
82 }
83
84 /**
85 * Runs preg_replace so that replacements don't happen within open tags.
86 * Parameters are the same as preg_replace, with an added optional search param for improved performance
87 *
88 * @param string $pattern Pattern to search for.
89 * @param string $replacement String to replace.
90 * @param string $content Post content.
91 * @param string $search String to search for.
92 *
93 * @return string $content Replaced post content.
94 */
95 function jetpack_preg_replace_outside_tags( $pattern, $replacement, $content, $search = null ) {
96 if ( $search && ! str_contains( $content, $search ) ) {
97 return $content;
98 }
99
100 $textarr = wp_html_split( $content );
101 unset( $content );
102 foreach ( $textarr as &$element ) {
103 if ( '' === $element || '<' === $element[0] ) {
104 continue;
105 }
106 $element = preg_replace( $pattern, $replacement, $element );
107 }
108
109 return implode( $textarr );
110 }
111
112 /**
113 * Runs preg_replace_callback so that replacements don't happen within open tags.
114 * Parameters are the same as preg_replace, with an added optional search param for improved performance.
115 *
116 * @param string $pattern Pattern to search for.
117 * @param string $callback Callback returning the replacement string.
118 * @param string $content Post content.
119 * @param string $search String to search for.
120 *
121 * @return string $content Replaced post content.
122 */
123 function jetpack_preg_replace_callback_outside_tags( $pattern, $callback, $content, $search = null ) {
124 if ( $search && ! str_contains( $content, $search ) ) {
125 return $content;
126 }
127
128 $textarr = wp_html_split( $content );
129 unset( $content );
130 foreach ( $textarr as &$element ) {
131 if ( '' === $element || '<' === $element[0] ) {
132 continue;
133 }
134 $element = preg_replace_callback( $pattern, $callback, $element );
135 }
136
137 return implode( $textarr );
138 }
139
140 if ( ! function_exists( 'jetpack_shortcode_get_wpvideo_id' ) ) {
141 /**
142 * Get VideoPress ID from wpvideo shortcode attributes.
143 *
144 * @param array $atts Shortcode attributes.
145 *
146 * @return string|int $id VideoPress ID.
147 */
148 function jetpack_shortcode_get_wpvideo_id( $atts ) {
149 if ( isset( $atts[0] ) ) {
150 return $atts[0];
151 } else {
152 return 0;
153 }
154 }
155 }
156
157 if ( ! function_exists( 'jetpack_shortcode_get_videopress_id' ) ) {
158 /**
159 * Get VideoPress ID from videopress shortcode attributes.
160 *
161 * @param array $atts Shortcode attributes.
162 * @return int $id VideoPress ID.
163 */
164 function jetpack_shortcode_get_videopress_id( $atts ) {
165 if ( isset( $atts[0] ) ) {
166 return $atts[0];
167 } else {
168 return 0;
169 }
170 }
171 }
172
173 /**
174 * Common element attributes parsing and sanitizing for src, width and height.
175 *
176 * @since 4.5.0
177 *
178 * @param array $attrs With original values.
179 *
180 * @return array $attrs With sanitized values.
181 */
182 function wpcom_shortcodereverse_parseattr( $attrs ) {
183 $defaults = array(
184 'src' => false,
185 'width' => false,
186 'height' => false,
187 );
188
189 $attrs = shortcode_atts( $defaults, $attrs );
190
191 $attrs['src'] = wp_strip_all_tags( $attrs['src'] ); // For sanity.
192 $attrs['width'] = ( is_numeric( $attrs['width'] ) ) ? abs( (int) $attrs['width'] ) : $defaults['width'];
193 $attrs['height'] = ( is_numeric( $attrs['height'] ) ) ? abs( (int) $attrs['height'] ) : $defaults['height'];
194
195 return $attrs;
196 }
197
198 /**
199 * When an embed service goes away, we can use this handler
200 * to output a link for history's sake.
201 *
202 * @param array $matches Regex partial matches against the URL passed.
203 * @param array $attr Attributes received in embed response.
204 * @param string $url Requested URL to be embedded.
205 * @return string Link to output.
206 */
207 function jetpack_deprecated_embed_handler( $matches, $attr, $url ) {
208 return sprintf( '<a href="%s">%s</a>', esc_url( $url ), esc_html( esc_url( $url ) ) );
209 }
210
211 jetpack_load_shortcodes();
212