Compatibility: do not serve images with Jetpack CDN when active

When Jetpack's image CDN is active, core calls to retrieve images return an image served by the CDN.

Since Fediverse instances usually fetch and cache the data themselves, we do not need to use the CDN for those images when returned by the ActivityPub plugin. In fact, we really do not want that to happen, as Fediverse instances may get errors when trying to fetch images from the CDN (they may get blocked / rate-limited / ...).

Let's hook into Jetpack's CDN to avoid that.
This commit is contained in:
Jeremy Herve 2023-04-24 09:15:48 +02:00
parent 47dc2f72d1
commit 3f4c44db05
No known key found for this signature in database
GPG key ID: EF65CC7D9AC11920

View file

@ -306,7 +306,24 @@ class Post {
// get URLs for each image // get URLs for each image
foreach ( $image_ids as $id ) { foreach ( $image_ids as $id ) {
$alt = \get_post_meta( $id, '_wp_attachment_image_alt', true ); $alt = \get_post_meta( $id, '_wp_attachment_image_alt', true );
/**
* If you use the Jetpack plugin and its Image CDN, aka Photon,
* the image strings returned will use the Photon URL.
* We don't want that since Fediverse instances already do caching on their end.
* Let the CDN only be used for visitors of the site.
*/
if ( class_exists( 'Jetpack_Photon' ) ) {
\remove_filter( 'image_downsize', array( \Jetpack_Photon::instance(), 'filter_image_downsize' ) );
}
$thumbnail = \wp_get_attachment_image_src( $id, 'full' ); $thumbnail = \wp_get_attachment_image_src( $id, 'full' );
// Re-enable Photon now that the image URL has been built.
if ( class_exists( 'Jetpack_Photon' ) ) {
\add_filter( 'image_downsize', array( \Jetpack_Photon::instance(), 'filter_image_downsize' ), 10, 3 );
}
$mimetype = \get_post_mime_type( $id ); $mimetype = \get_post_mime_type( $id );
if ( $thumbnail ) { if ( $thumbnail ) {