Jetpack入れたからwp_get_attachment_image_srcの戻り値が変わったの?

Yoko theme を使用しheaderに画像を出力していました。
いつの間にかアップロードした画像が出なくなったなーと思って調べてみたら、画像の出力元が i0.wp.com. i1.wp.com… に変わってました。
あ〜、Jetpackのどっかのアップデートで「wp.comから画像出力する?」みたいなこと聞かれたかも、かもかも。
CDNみたくしてくれるのねん、とOKしたなー。

う〜ん、でなんでheader画像はデフォルトのヤツだけなの???

if ( is_singular() &&
	current_theme_supports( 'post-thumbnails' ) &&
	has_post_thumbnail( $post->ID ) &&
	( $image = wp_get_attachment_image_src( get_post_thumbnail_id( $post->ID ), 'post-thumbnail' ) ) &&
	$image[1] >= HEADER_IMAGE_WIDTH
 ) :
 echo get_the_post_thumbnail( $post->ID , array(1102,350), array('class' => 'headerimage'));

$image = wp_get_attachment_image_src で取得した $image[1] に以前は画像幅(数値)が入ってて $image[1] >= HEADER_IMAGE_WIDTH 定数指定のサイズより大きかったらアップロードした画像を使う、ことになってたらしいす。

Jetpackを有効にすると $image[1] は常に false になります。
これじゃ出力できっこありません。

wp_get_attachment_image_srcJetpack が何か細工をしてるようです。

探してみると class.photon.php, class Jetpack_Photon に記述を見つけました。
でもまだどうしたら良いのか見当もつきません。

Forumの“wp_get_attachment_image_src changed?”というトピックを見ると、やはり原因はJetpackでfilterを追加すると良いらしい。
回答者はJetpack作者なので間違いは無いと思うけど書かれてる方法では解決できません。

無い知恵しぼって考えた。

$jp_photon = Jetpack_Photon::instance();
remove_filter( 'image_downsize', array( $jp_photon, 'filter_image_downsize' ) );
 
if ( is_singular() &&
// 省略
 
endif;
 
add_filter( 'image_downsize', array( $jp_photon, 'filter_image_downsize' ), 10, 3 );

不細工だけど判定前にfilterをリムーブして判定後に元に戻しました。
header画像はwp.comからでは無くなったけど、しょうがないかなぁ。

もっとステキな方法があるはず。
教えて欲しいなー

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です