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 / tweet.php
jetpack / modules / shortcodes Last commit date
css 10 months ago images 2 years ago img 2 years ago js 9 months ago archiveorg-book.php 1 year ago archiveorg.php 1 year ago archives.php 1 year ago bandcamp.php 11 months ago brightcove.php 1 year ago cartodb.php 1 year ago class.filter-embedded-html-objects.php 1 year ago codepen.php 1 year ago crowdsignal.php 9 months ago dailymotion.php 1 year ago descript.php 1 year ago facebook.php 1 year ago flatio.php 1 year ago flickr.php 11 months ago getty.php 1 year ago gist.php 1 year ago googleapps.php 1 year ago googlemaps.php 1 year ago googleplus.php 1 year ago gravatar.php 1 year ago houzz.php 1 year ago inline-pdfs.php 1 year ago instagram.php 1 year ago kickstarter.php 1 year ago mailchimp.php 1 year ago medium.php 1 year ago mixcloud.php 1 year ago others.php 1 year ago pinterest.php 1 year ago presentations.php 1 year ago quiz.php 1 year ago recipe.php 11 months ago scribd.php 1 year ago shortcode-utils.php 1 year ago sitemap.php 1 year ago slideshare.php 9 months ago slideshow.php 11 months ago smartframe.php 1 year ago soundcloud.php 1 year ago spotify.php 1 year ago ted.php 11 months ago tweet.php 1 year ago twitchtv.php 1 year ago twitter-timeline.php 1 year ago twitter.php 1 year ago unavailable.php 1 year ago untappd-menu.php 1 year ago upcoming-events.php 1 year ago ustream.php 1 year ago videopress.php 1 year ago vimeo.php 1 year ago vine.php 1 year ago vr.php 1 year ago wufoo.php 1 year ago youtube.php 1 year ago
tweet.php
179 lines
1 <?php //phpcs:ignore WordPress.Files.FileName.InvalidClassFileName
2 /**
3 * Tweet shortcode.
4 * Params map to key value pairs, and all but tweet are optional:
5 * tweet = id or permalink url* (Required)
6 * align = none|left|right|center
7 * width = number in pixels example: width="300"
8 * lang = en|fr|de|ko|etc... language country code.
9 * hide_thread = true | false **
10 * hide_media = true | false **
11 *
12 * Basic:
13 * [tweet https://twitter.com/jack/statuses/20 width="350"]
14 *
15 * More parameters and another tweet syntax admitted:
16 * [tweet tweet="https://twitter.com/jack/statuses/20" align="left" width="350" align="center" lang="es"]
17 *
18 * @package automattic/jetpack
19 */
20
21 if ( ! defined( 'ABSPATH' ) ) {
22 exit( 0 );
23 }
24
25 add_shortcode( 'tweet', array( 'Jetpack_Tweet', 'jetpack_tweet_shortcode' ) );
26
27 /**
28 * Tweet Shortcode class.
29 */
30 class Jetpack_Tweet {
31
32 /**
33 * Array of arguments about a tweet.
34 *
35 * @var array
36 */
37 public static $provider_args;
38
39 /**
40 * Parse shortcode arguments and render its output.
41 *
42 * @since 4.5.0
43 *
44 * @param array $atts Shortcode parameters.
45 *
46 * @return string
47 */
48 public static function jetpack_tweet_shortcode( $atts ) {
49 global $wp_embed;
50
51 $default_atts = array(
52 'tweet' => '',
53 'align' => 'none',
54 'width' => '',
55 'lang' => 'en',
56 'hide_thread' => 'false',
57 'hide_media' => 'false',
58 );
59
60 $attr = shortcode_atts( $default_atts, $atts );
61
62 self::$provider_args = $attr;
63
64 /*
65 * figure out the tweet id for the requested tweet
66 * supporting both omitted attributes and tweet="tweet_id"
67 * and supporting both an id and a URL
68 */
69 if ( empty( $attr['tweet'] ) && ! empty( $atts[0] ) ) {
70 $attr['tweet'] = $atts[0];
71 }
72
73 if ( ctype_digit( $attr['tweet'] ) ) {
74 $id = 'https://twitter.com/jetpack/status/' . $attr['tweet'];
75 $tweet_id = (int) $attr['tweet'];
76 } else {
77 preg_match( '/^http(s|):\/\/twitter\.com(\/\#\!\/|\/)([a-zA-Z0-9_]{1,20})\/status(es)*\/(\d+)$/', $attr['tweet'], $urlbits );
78
79 if ( isset( $urlbits[5] ) && (int) $urlbits[5] ) {
80 $id = 'https://twitter.com/' . $urlbits[3] . '/status/' . (int) $urlbits[5];
81 $tweet_id = (int) $urlbits[5];
82 } else {
83 return '<!-- Invalid tweet id -->';
84 }
85 }
86
87 // Add shortcode arguments to provider URL.
88 add_filter( 'oembed_fetch_url', array( 'Jetpack_Tweet', 'jetpack_tweet_url_extra_args' ), 10, 3 );
89
90 /*
91 * In Jetpack, we use $wp_embed->shortcode() to return the tweet output.
92 * @see https://github.com/Automattic/jetpack/pull/11173
93 */
94 $output = $wp_embed->shortcode( $atts, $id );
95
96 // Clean up filter.
97 remove_filter( 'oembed_fetch_url', array( 'Jetpack_Tweet', 'jetpack_tweet_url_extra_args' ), 10 );
98
99 /** This action is documented in modules/widgets/social-media-icons.php */
100 do_action( 'jetpack_bump_stats_extras', 'embeds', 'tweet' );
101
102 if ( class_exists( 'Jetpack_AMP_Support' ) && Jetpack_AMP_Support::is_amp_request() ) {
103 $width = ! empty( $attr['width'] ) ? $attr['width'] : 600;
104 $height = 480;
105 $output = sprintf(
106 '<amp-twitter data-tweetid="%1$s" layout="responsive" width="%2$d" height="%3$d"></amp-twitter>',
107 esc_attr( $tweet_id ),
108 absint( $width ),
109 absint( $height )
110 );
111 } else {
112 // Add Twitter widgets.js script to the footer.
113 add_action( 'wp_footer', array( 'Jetpack_Tweet', 'jetpack_tweet_shortcode_script' ) );
114 }
115
116 return $output;
117 }
118
119 /**
120 * Adds parameters to URL used to fetch the tweet.
121 *
122 * @since 4.5.0
123 *
124 * @param string $provider URL of provider that supplies the tweet we're requesting.
125 * @param string $url URL of tweet to embed.
126 * @param array $args Parameters supplied to shortcode and passed to wp_oembed_get.
127 *
128 * @return string
129 */
130 public static function jetpack_tweet_url_extra_args( $provider, $url, $args = array() ) { // phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable
131 foreach ( self::$provider_args as $key => $value ) {
132 switch ( $key ) {
133 case 'align':
134 case 'lang':
135 case 'hide_thread':
136 case 'hide_media':
137 $provider = add_query_arg( $key, $value, $provider );
138 break;
139 }
140 }
141
142 // Disable script since we're enqueing it in our own way in the footer.
143 $provider = add_query_arg( 'omit_script', 'true', $provider );
144
145 // Twitter doesn't support maxheight so don't send it.
146 $provider = remove_query_arg( 'maxheight', $provider );
147
148 /**
149 * Filter the Twitter Partner ID.
150 *
151 * @module shortcodes
152 *
153 * @since 4.6.0
154 *
155 * @param string $partner_id Twitter partner ID.
156 */
157 $partner = apply_filters( 'jetpack_twitter_partner_id', 'jetpack' );
158
159 // Add Twitter partner ID to track embeds from Jetpack.
160 if ( ! empty( $partner ) ) {
161 $provider = add_query_arg( 'partner', $partner, $provider );
162 }
163
164 return $provider;
165 }
166
167 /**
168 * Enqueue front end assets.
169 *
170 * @since 4.5.0
171 */
172 public static function jetpack_tweet_shortcode_script() {
173 if ( ! wp_script_is( 'twitter-widgets', 'registered' ) ) {
174 wp_register_script( 'twitter-widgets', 'https://platform.twitter.com/widgets.js', array(), JETPACK__VERSION, true );
175 wp_print_scripts( 'twitter-widgets' );
176 }
177 }
178 } // class end
179