WordPress Popular Postsプラグインのを使っているのですが、出力するのに
post_html' => "<li>{thumb}{title}</li>"
を記載するとサムネイルののurlが
http://example.com/wp-content/uploads/wordpress-popular-posts/2245-80x80.jpg
という風になり、
別に新着記事を表示するところではサムネイルを出力するのに
<?php echo the_post_thumbnail(); ?>
を記載するとサムネイルのurlが
http://example.com/wp-content/uploads/2014/11/xxx-80x80.jpg
という風に表示されます。
どちらも同じ画像ですが、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('!<img(.+?)? src="[^"]+"(.+?)>!', '<img$1 src="' . $thumb['1'] . '"$2>', $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';
※画像生成の停止については、簡単に確認しただけです。
テンプレートタグの「wpp_get_mostpopular()」でもウィジェットの場合でも同様の動作結果になります。
※「post_html」パラメータの指定の有無は関係ありません。
・Changelog
https://wordpress.org/plugins/wordpress-popular-posts/changelog/
-----------------------------------------------------------
3.1.0
,,,
・Thumbail generation process has been refactored for efficiency.
・Thumbnails are now stored in a custom folder under Uploads.
-----------------------------------------------------------
「WordPress Popular Posts」の設定オプション「Tools」タブ「Thumbnails」に「Empty image cache」ボタンが追加されていると思います。
「Use this button to clear WPP's thumbnails cache」という説明がありますが、このボタンをクリックすると「wp-content/uploads/wordpress-popular-posts」に生成されたサムネイル画像が削除されます。
「wpp_get_mostpopular()」またはウィジェットでサムネイル画像のサイズを変更後にサイトにアクセスすると、その都度新しいサイズのサムネイル画像が生成される仕組みですので、この変更により不要なサムネイル画像の削除が容易になりました。
今後は、サムネイル画像のサイズ変更後には上記のボタンをクリックして利用する事をおすすめします。
※今後は「wp-content/uploads/wordpress-popular-posts」の画像が利用されます。(以前のバージョンで「wp-content/uploads//??/??」に生成されたサムネイル画像は手動で削除してみてください。
回答がない状態でキャンセルすると質問が消えてしまいます。
popular-postsが「wp-content/uploads/wordpress-popular-posts」の中の画像を使うようになったことは分かったのですが、
新着記事を表示する場合はpopular-postsは利用していないので、そうすると新着記事と人気記事を表示する場合、
画像URLを合わせることは出来ないということになるでしょうか?
それとも新着記事もpolular-postsを利用して表示させることが出来るのでしょうか。