-
Notifications
You must be signed in to change notification settings - Fork 799
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add AMP support for the Twitter Timeline widget #15328
Conversation
Use the <amp-twitter> component, and add unit tests for several cases.
This is an automated check which relies on |
$type = ( isset( $instance['type'] ) ? $instance['type'] : '' ); | ||
$widget_id = ( isset( $instance['widget-id'] ) ? $instance['widget-id'] : '' ); | ||
switch ( $type ) { | ||
case 'profile': | ||
echo ' href="https://twitter.com/' . esc_attr( $widget_id ) . '"'; | ||
break; | ||
case 'widget-id': | ||
default: | ||
echo ' data-widget-id="' . esc_attr( $widget_id ) . '"'; | ||
break; | ||
} | ||
echo ' href="https://twitter.com/' . esc_attr( $widget_id ) . '"'; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Much of this PR's diff is simply moving logic to different lines, and changing echo
to $output .=
.
For example, this snippet is simply moved lower in the file, with echo
changed to $output .=
Caution: This PR has changes that must be merged to WordPress.com |
r206428-wpcom |
if ( class_exists( 'Jetpack_AMP_Support' ) && Jetpack_AMP_Support::is_amp_request() ) { | ||
$width = ! empty( $instance['width'] ) ? $instance['width'] : 600; | ||
$height = ! empty( $instance['height'] ) ? $instance['height'] : 480; | ||
$output .= '<amp-twitter' . $data_attrs . ' layout="responsive" data-timeline-source-type="profile" data-timeline-screen-name="' . esc_attr( $widget_id ) . '" width="' . absint( $width ) . '" height="' . absint( $height ) . '">'; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped | ||
$output .= esc_html( $timeline_placeholder ) . '</amp-twitter>'; | ||
|
||
echo $output . $args['after_widget']; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped | ||
return; | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Note that this is currently needed because the AMP plugin has a bug in how it recognizes markup for Twitter embeds. Namely, at the moment it is only recognizing div
elements with the twitter-tweet
class name:
It should be expanded to also recognize twitter-timeline
as well. If so, then I believe this condition can be removed.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I've filed an issue to fix this in the AMP plugin: ampproject/amp-wp#4653
With that done, it may make sense to remove this condition as it won't strictly be needed anymore. That being said, it is not bad to output <amp-twitter>
markup from the start! It can be somewhat preferable to relying on the AMP plugin do the conversion.
Is this a new feature or does it add/remove features to an existing part of Jetpack?
Testing instructions:
Proposed changelog entry for your changes: