twitter-timeline.php
1.93 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
<?php
/**
* Twitter Timeline Shortcode.
*
* Examples:
* [twitter-timeline username=jetpack]
*
* @package automattic/jetpack
*/
/**
* Render the Twitter shortcode.
*
* @param array $atts Shortcode attributes.
*/
function twitter_timeline_shortcode( $atts ) {
$default_atts = array(
'username' => '',
'id' => '',
'width' => '450',
'height' => '282',
);
$atts = shortcode_atts( $default_atts, $atts, 'twitter-timeline' );
$atts['username'] = preg_replace( '/[^A-Za-z0-9_]+/', '', $atts['username'] );
if ( empty( $atts['username'] ) && ! is_numeric( $atts['id'] ) ) {
return '<!-- ' . __( 'Must specify Twitter Timeline id or username.', 'jetpack' ) . ' -->';
}
$output = '<a class="twitter-timeline"';
/** This filter is documented in modules/shortcodes/tweet.php */
$partner = apply_filters( 'jetpack_twitter_partner_id', 'jetpack' );
if ( ! empty( $partner ) ) {
$output .= ' data-partner="' . esc_attr( $partner ) . '"';
}
if ( is_numeric( $atts['width'] ) ) {
$output .= ' data-width="' . esc_attr( $atts['width'] ) . '"';
}
if ( is_numeric( $atts['height'] ) ) {
$output .= ' data-height="' . esc_attr( $atts['height'] ) . '"';
}
if ( is_numeric( $atts['id'] ) ) {
$output .= ' data-widget-id="' . esc_attr( $atts['id'] ) . '"';
}
if ( ! empty( $atts['username'] ) ) {
$output .= ' href="' . esc_url( 'https://twitter.com/' . $atts['username'] ) . '"';
}
$output .= '>';
$output .= sprintf(
/* Translators: placeholder is a Twitter username. */
__( 'Tweets by @%s', 'jetpack' ),
$atts['username']
);
$output .= '</a>';
wp_enqueue_script( 'jetpack-twitter-timeline' );
return $output;
}
add_shortcode( 'twitter-timeline', 'twitter_timeline_shortcode' );
/**
* Enqueue the js used by the Twitter shortcode.
*/
function twitter_timeline_js() {
if ( is_customize_preview() ) {
wp_enqueue_script( 'jetpack-twitter-timeline' );
}
}
add_action( 'wp_enqueue_scripts', 'twitter_timeline_js' );