PluginProbe ʕ •ᴥ•ʔ
Jetpack – WP Security, Backup, Speed, & Growth / 15.2.1
Jetpack – WP Security, Backup, Speed, & Growth v15.2.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 9 months ago comment-likes 1 year ago comments 9 months ago custom-post-types 1 year ago external-media 1 year ago google-fonts 11 months ago gravatar 6 years ago infinite-scroll 9 months ago likes 9 months ago markdown 1 year ago memberships 11 months ago photon-cdn 11 months ago plugin-search 1 year ago post-by-email 1 year ago related-posts 10 months ago scan 9 months ago seo-tools 1 year ago sharedaddy 9 months ago shortcodes 9 months ago simple-payments 1 year ago site-icon 11 months ago sitemaps 10 months ago stats 1 year ago subscriptions 9 months ago theme-tools 9 months ago tiled-gallery 1 year ago verification-tools 1 year ago videopress 11 months ago widget-visibility 11 months ago widgets 9 months ago woocommerce-analytics 9 months ago wordads 9 months ago wpcom-tos 1 year ago account-protection.php 1 year ago blaze.php 1 year ago blocks.php 1 year ago carousel.php 1 year ago comment-likes.php 10 months ago comments.php 1 year ago contact-form.php 1 year ago copy-post.php 1 year ago custom-content-types.php 1 year ago google-fonts.php 1 year ago gravatar-hovercards.php 1 year ago infinite-scroll.php 1 year ago json-api.php 1 year ago latex.php 1 year ago likes.php 9 months ago markdown.php 1 year ago module-extras.php 1 year ago module-headings.php 1 year ago module-info.php 1 year ago monitor.php 1 year ago notes.php 1 year ago photon-cdn.php 10 months ago photon.php 1 year ago plugin-search.php 1 year ago post-by-email.php 1 year ago post-list.php 1 year ago protect.php 1 year ago publicize.php 1 year ago related-posts.php 1 year ago search.php 1 year ago seo-tools.php 1 year ago sharedaddy.php 1 year ago shortcodes.php 1 year ago shortlinks.php 11 months ago simple-payments.php 1 year ago sitemaps.php 1 year ago sso.php 1 year ago stats.php 10 months ago subscriptions.php 11 months ago theme-tools.php 1 year ago tiled-gallery.php 1 year ago vaultpress.php 1 year ago verification-tools.php 1 year ago videopress.php 1 year ago waf.php 1 year ago widget-visibility.php 1 year ago widgets.php 1 year ago woocommerce-analytics.php 1 year ago wordads.php 1 year ago wpgroho.js 1 year ago
shortcodes.php
220 lines
1 <?php
2 /**
3 * Module Name: Shortcode Embeds
4 * Module Description: Easily embed rich media like YouTube videos and tweets using simple shortcodes.
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 if ( ! defined( 'ABSPATH' ) ) {
18 exit( 0 );
19 }
20
21 // Load shortcode utils.
22 require_once __DIR__ . '/shortcodes/shortcode-utils.php';
23
24 /**
25 * Transforms the $atts array into a string that the old functions expected
26 *
27 * The old way was:
28 * [shortcode a=1&b=2&c=3] or [shortcode=1]
29 * This is parsed as array( a => '1&b=2&c=3' ) and array( 0 => '=1' ), which is useless
30 *
31 * @param array $params Array of old shortcode parameters.
32 * @param bool $old_format_support true if [shortcode=foo] format is possible.
33 *
34 * @return string $params
35 */
36 function shortcode_new_to_old_params( $params, $old_format_support = false ) {
37 $str = '';
38
39 if ( $old_format_support && isset( $params[0] ) ) {
40 $str = ltrim( $params[0], '=' );
41 } elseif ( is_array( $params ) ) {
42 foreach ( array_keys( $params ) as $key ) {
43 if ( ! is_numeric( $key ) ) {
44 $str = $key . '=' . $params[ $key ];
45 }
46 }
47 }
48
49 return str_replace( array( '&amp;', '&#038;' ), '&', $str );
50 }
51
52 /**
53 * Load all available Jetpack shortcode files.
54 */
55 function jetpack_load_shortcodes() {
56 // Prevent third-party shortcode plugins when loading shortcode files.
57 // Format: shortcode => condition_when_to_skip
58 $shortcode_skips = array(
59 'shortcode-utils' => true, // Utils aren't shortcodes.
60 'soundcloud' => function_exists( 'soundcloud_shortcode' ), // SoundCloud Shortcodes plugin
61 );
62
63 $shortcode_includes = array();
64
65 foreach ( Jetpack::glob_php( __DIR__ . '/shortcodes' ) as $file ) {
66 $filename = substr( basename( $file ), 0, -4 );
67
68 if ( empty( $shortcode_skips[ $filename ] ) ) {
69 $shortcode_includes[ $filename ] = $file;
70 }
71 }
72
73 /**
74 * This filter allows other plugins to override which shortcodes Jetpack loads.
75 *
76 * 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.
77 *
78 * @module shortcodes
79 *
80 * @since 2.2.1
81 * @since 4.2.0 Added filename without extension as array key.
82 *
83 * @param array $shortcode_includes An array of which shortcodes to include.
84 */
85 $shortcode_includes = apply_filters( 'jetpack_shortcodes_to_include', $shortcode_includes );
86
87 foreach ( $shortcode_includes as $include ) {
88 include_once $include;
89 }
90 }
91
92 /**
93 * Runs preg_replace so that replacements don't happen within open tags.
94 * Parameters are the same as preg_replace, with an added optional search param for improved performance
95 *
96 * @param string $pattern Pattern to search for.
97 * @param string $replacement String to replace.
98 * @param string $content Post content.
99 * @param string $search String to search for.
100 *
101 * @return string $content Replaced post content.
102 */
103 function jetpack_preg_replace_outside_tags( $pattern, $replacement, $content, $search = null ) {
104 if ( $search && ! str_contains( $content, $search ) ) {
105 return $content;
106 }
107
108 $textarr = wp_html_split( $content );
109 unset( $content );
110 foreach ( $textarr as &$element ) {
111 if ( '' === $element || '<' === $element[0] ) {
112 continue;
113 }
114 $element = preg_replace( $pattern, $replacement, $element );
115 }
116
117 return implode( $textarr );
118 }
119
120 /**
121 * Runs preg_replace_callback so that replacements don't happen within open tags.
122 * Parameters are the same as preg_replace, with an added optional search param for improved performance.
123 *
124 * @param string $pattern Pattern to search for.
125 * @param string $callback Callback returning the replacement string.
126 * @param string $content Post content.
127 * @param string $search String to search for.
128 *
129 * @return string $content Replaced post content.
130 */
131 function jetpack_preg_replace_callback_outside_tags( $pattern, $callback, $content, $search = null ) {
132 if ( $search && ! str_contains( $content, $search ) ) {
133 return $content;
134 }
135
136 $textarr = wp_html_split( $content );
137 unset( $content );
138 foreach ( $textarr as &$element ) {
139 if ( '' === $element || '<' === $element[0] ) {
140 continue;
141 }
142 $element = preg_replace_callback( $pattern, $callback, $element );
143 }
144
145 return implode( $textarr );
146 }
147
148 if ( ! function_exists( 'jetpack_shortcode_get_wpvideo_id' ) ) {
149 /**
150 * Get VideoPress ID from wpvideo shortcode attributes.
151 *
152 * @param array $atts Shortcode attributes.
153 *
154 * @return string|int $id VideoPress ID.
155 */
156 function jetpack_shortcode_get_wpvideo_id( $atts ) {
157 if ( isset( $atts[0] ) ) {
158 return $atts[0];
159 } else {
160 return 0;
161 }
162 }
163 }
164
165 if ( ! function_exists( 'jetpack_shortcode_get_videopress_id' ) ) {
166 /**
167 * Get VideoPress ID from videopress shortcode attributes.
168 *
169 * @param array $atts Shortcode attributes.
170 * @return int $id VideoPress ID.
171 */
172 function jetpack_shortcode_get_videopress_id( $atts ) {
173 if ( isset( $atts[0] ) ) {
174 return $atts[0];
175 } else {
176 return 0;
177 }
178 }
179 }
180
181 /**
182 * Common element attributes parsing and sanitizing for src, width and height.
183 *
184 * @since 4.5.0
185 *
186 * @param array $attrs With original values.
187 *
188 * @return array $attrs With sanitized values.
189 */
190 function wpcom_shortcodereverse_parseattr( $attrs ) {
191 $defaults = array(
192 'src' => false,
193 'width' => false,
194 'height' => false,
195 );
196
197 $attrs = shortcode_atts( $defaults, $attrs );
198
199 $attrs['src'] = wp_strip_all_tags( $attrs['src'] ); // For sanity.
200 $attrs['width'] = ( is_numeric( $attrs['width'] ) ) ? abs( (int) $attrs['width'] ) : $defaults['width'];
201 $attrs['height'] = ( is_numeric( $attrs['height'] ) ) ? abs( (int) $attrs['height'] ) : $defaults['height'];
202
203 return $attrs;
204 }
205
206 /**
207 * When an embed service goes away, we can use this handler
208 * to output a link for history's sake.
209 *
210 * @param array $matches Regex partial matches against the URL passed.
211 * @param array $attr Attributes received in embed response.
212 * @param string $url Requested URL to be embedded.
213 * @return string Link to output.
214 */
215 function jetpack_deprecated_embed_handler( $matches, $attr, $url ) {
216 return sprintf( '<a href="%s">%s</a>', esc_url( $url ), esc_html( esc_url( $url ) ) );
217 }
218
219 jetpack_load_shortcodes();
220