Here’s one way using the oembed_fetch_url
filter to add the hide_media
query parameter, that’s also mentioned in the Twitter doc page you linked to:
Set an oEmbed query parameter of
hide_media=true
or add a
data-cards="hidden"
attribute to the resulting<blockquote>
element to
prevent expanded content display.
Here’s an example:
/**
* Hide media for all twitter oEmbeds, using the hide_media=1 query argument
*/
add_filter( 'oembed_fetch_url', function( $provider, $url, $args )
{
// Target publish.twitter.com provider
if( 'publish.twitter.com' === parse_url( $provider, PHP_URL_HOST ) )
$provider = add_query_arg( 'hide_media', 1, $provider );
return $provider;
}, 99, 3 );
Here’s how the Twitter provider url looks before:
and after:
Then there’s the oembed_result
to filter HTML returned by the provider. We could also use the embed_oembed_html
filter to dynamically add the data-cards="hidden"
attribute, even on a per post basis or check for our own custom query parameters. But I think the first method is more stable, since it’s harder to inject the attribute into a possibly dynamic HTML structure.