質問: WordPress Popular Postsが取得する画像URLを変更したいです。 WordPress Popular Postsプラグインのを使っているのですが、出力するのに post_html' => "{thumb}{title}" を記載するとサムネイルののurlが という風になり、 別に新着記事を表示するところではサムネイルを出力するのに を記載するとサムネイルのurlが という風に表示されます。 どちらも同じ画像ですが、URLが異なってしまっているので、できれば 共通のアドレスに統一したいです。 wp-content/uploads/の中のwordpress-popular-postsとうフォルダは消しても勝手に出来上がってしまいます。 特に何か設定したわけではないのですが、このフォルダに画像を保存させず通常の画像を収納している uploads/月別フォルダの中の画像を使うようにするにはどう設定したらいいのでしょうか。 ネット上をいくら検索しても同様の症状が見つからず困っています。 お分かりになる方がいましたら、ご指導お願いいたします。
回答: コメントへの返信も兼ねて回答します。 > 新着記事を表示する場合はpopular-postsは利用していないので、そうすると新着記事と人気記事を表示する場合、 > 画像URLを合わせることは出来ないということになるでしょうか? > それとも新着記事もpolular-postsを利用して表示させることが出来るのでしょうか。 > > WordPress Popular Postsプラグインの仕様変更により、「wp-content/uploads/wordpress-popular-posts」に画像が生成されるようになったのは理解したと思います。 WordPress Popular Postsプラグインには新着記事を表示する機能はありませんから、WordPressの標準機能かあるいは別のプラグインを利用して表示するしかありませんし、各々の画像URLを合わせる事もできません。 ただし、WordPress Popular Postsプラグインのサムネイル画像のURLをWordPress標準の機能で生成される画像に変更するカスタマイズは可能です。(調べたらちょうど良いフィルタが用意されていました。) ※WordPress Popular Postsプラグインが生成する画像は、人気記事として記録されている投稿および固定ページのみです。(新着記事のサムネイル画像をWordPress Popular Postsプラグインが生成する画像に合わせる場合、新着記事すべてが人気記事になるとは限りませんので、必要な画像がないという事になるかもしれませんし、前者のカスタマイズの方が比較的容易なようでした。) 次のコードを「functions.php」に追記してみてください。 ``` function change_popularposts_thumb( $content, $p ) { $thumb_html = get_the_post_thumbnail( $p->id, 'thumbnail' ); preg_match( '!src="([^"]+)"!', $thumb_html, $thumb ); $new_content = preg_replace('!!', '', $content ); return $new_content; } add_filter( 'wpp_post', 'change_popularposts_thumb', 10, 2 ); ``` ※WordPress Popular Postsプラグインの画像生成機能はそのままですので、「wp-content/uploads/wordpress-popular-posts」の中には人気記事の画像が生成されます。 サムネイル画像の生成を止めたい場合は、WordPress Popular Postsプラグイン本体を変更する必要があります。 「wordpress-popular-posts.php」の2292行目に次の行があります。 ``` $new_img = $image->save( trailingslashit($this->uploads_dir['basedir']) . $p->id . '-' . $dimension[0] . 'x' . $dimension[1] . '.' . $file_info['extension'] ); ``` 上記を次のように変更してください。(すぐに戻せるように、元の記述はコメントアウトして残して置いた方が良いと思います。) ``` // $new_img = $image->save( trailingslashit($this->uploads_dir['basedir']) . $p->id . '-' . $dimension[0] . 'x' . $dimension[1] . '.' . $file_info['extension'] ); $new_img = 'dummy'; ``` ※画像生成の停止については、簡単に確認しただけです。