wordpressのjetpackがなんか便利そうで入れてみた。
ガジェットに人気記事が設定できてしかもこれ、テキスト表示か画像+テキスト表示か画像のみで
選ぶ事ができるみたいで、ぜひ使ってみようと思ってガジェットに設定しました。
INDEX
画像が全部俺だった
Gravatarの画像引っ張ってきているのか、
全部自分のアバターが表示されたので悲しくなりました。
てっきり投稿IDからアイキャッチ画像持ってきてリサイズまでしてくれると思ったのに。そんなに世の中甘くないんですね。
ソースを探す。
jetpackとはプラグインなので、プラグインフォルダを探す。
plugins→jetpack→modules→widgets→top-posts.php
このtop-posts.phpを編集しなきゃいかんようです。
もしもしなくて良いなら教えて欲しいです。
どれが出力されているか確認する。
吐き出されてるimgタグのsrcを見ると$post['image']が吐き出されていたので、何が入ってるのか確認する。
//175行目辺り $image = Jetpack_PostImages::get_image( $post['post_id'], array( 'fallback_to_avatars' => true ) );
雰囲気的に、これはアバターが入りそうだし検索しても英語ばっかで読むの面倒なので、ここをコメントアウトしたら画像が消えたので、こいつだということにした。
jetpackのtop-posts.phpを改造する
案外人気記事のIDを持ってきてくれてるので、やることは簡単。
- 投稿記事IDからアタッチメントIDを取得
- アタッチメントIDから画像のパスを取得
- そのパスを$post['image']に代入
コードで書くならこうですね。
$addtmp = array(); $addtmp = wp_get_attachment_image_src(get_post_thumbnail_id($post['post_id']),'post-thumbnail'); $post['image'] = $addtmp[0];
ポイントは、wp_get_attachment_image_srcにはアタッチメントIDを渡す事。
アタッチメントIDは、get_post_thumbnail_idに投稿IDを渡す事で取得できます。
ほんでwp_get_attachment_image_srcは配列でデータが戻るので、0番目を取得してください。