PluginProbe ʕ •ᴥ•ʔ
Jetpack – WP Security, Backup, Speed, & Growth / 16.0-beta
Jetpack – WP Security, Backup, Speed, & Growth v16.0-beta
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 1 month ago images 1 year ago img 2 months ago js 7 months ago archiveorg-book.php 7 months ago archiveorg.php 1 month ago archives.php 1 week ago bandcamp.php 7 months ago brightcove.php 6 months ago cartodb.php 7 months ago class.filter-embedded-html-objects.php 7 months ago codepen.php 7 months ago crowdsignal.php 6 months ago dailymotion.php 7 months ago descript.php 7 months ago facebook.php 7 months ago flatio.php 7 months ago flickr.php 7 months ago getty.php 7 months ago gist.php 7 months ago googleapps.php 7 months ago googlemaps.php 1 month ago googleplus.php 7 months ago gravatar.php 7 months ago houzz.php 7 months ago inline-pdfs.php 7 months ago instagram.php 7 months ago kickstarter.php 7 months ago mailchimp.php 1 month ago medium.php 7 months ago mixcloud.php 7 months ago others.php 7 months ago pinterest.php 7 months ago presentations.php 7 months ago quiz.php 7 months ago recipe.php 2 weeks ago scribd.php 7 months ago shortcode-utils.php 7 months ago sitemap.php 7 months ago slideshare.php 7 months ago slideshow.php 2 weeks ago smartframe.php 7 months ago soundcloud.php 1 month ago spotify.php 7 months ago ted.php 7 months ago tweet.php 7 months ago twitchtv.php 2 weeks ago twitter-timeline.php 7 months ago twitter.php 7 months ago unavailable.php 7 months ago untappd-menu.php 7 months ago upcoming-events.php 7 months ago ustream.php 7 months ago videopress.php 7 months ago vimeo.php 1 month ago vine.php 7 months ago vr.php 1 month ago wufoo.php 7 months ago youtube.php 4 months 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