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