人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

WordPress Popular Postsが取得する画像URLを変更したいです。

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/月別フォルダの中の画像を使うようにするにはどう設定したらいいのでしょうか。
ネット上をいくら検索しても同様の症状が見つからず困っています。
お分かりになる方がいましたら、ご指導お願いいたします。

●質問者: ringomaru
●カテゴリ:ウェブ制作
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● rouge_2008
●200ポイント ベストアンサー

コメントへの返信も兼ねて回答します。

新着記事を表示する場合は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';

※画像生成の停止については、簡単に確認しただけです。


rouge_2008さんのコメント
公式フォーラムにも同じ質問がありましたが、マルチポストはQ&Aサイトおよび掲示板全般においてマナー違反とされています。 人力検索はてなではガイドラインで禁止しています。 ガイドラインを確認してから利用するようにしてください。 ・人力検索はてな利用ガイドライン http://q.hatena.ne.jp/help/guideline ※公式フォーラムの質問は早めに締め切ってください。(この質問のURLを載せて解決報告をして置くといいと思います。)

ringomaruさんのコメント
ご回答ありがとうございます。 そして知らなかったとはいえマルチポストというものを やってしまっていたこと、大変反省しました。ありがとうございます。 教えていただいた通りフォーラムにはこちらのURLを記載して質問を解決済みにいたしました。 そして教えていただいたfunctions.phpに記載する方法で、思っていた通りの画像urlを取得できたことをお伝えいたします。 本当に助かりました。ありがとうございました。画像生成停止に関しては、とりあえず使わずにそのままにしておこうと思います。

ringomaruさんのコメント
rouge_2008 様 お世話になります。 教えていただいた上記コードで成功したと思ったのですが、 最新記事の方では http://example/wordpress/wp-content/uploads/2014/11/xxx-80x80.jpg を取得しているのですが、 人気記事の方ではhttp://example/wordpress/wp-content/uploads/2014/11/xxx.jpgとフルサイズの画像のURLが出力されていて、それをwidth="80" height="80"でリサイズして出力しているだけになっていました。 これはどうしたら改善できるでしょうか。 もしまだご覧いただけるようでしたら、ご回答いただけると幸いです。

ringomaruさんのコメント
すみません、自分で解決できました。 $thumb_html = get_the_post_thumbnail( $p->id,'thumbnail' );の部分を $thumb_html = get_the_post_thumbnail( $p->id,array(80,80),'thumbnail' );としたら、上手くいきました。

rouge_2008さんのコメント
すみません。うっかりミスがありました。 関数内の次の行を >|| $thumb_html = get_the_post_thumbnail( $p->id, 'thumbnail' ); ||< 以下のどちらかに修正してみてください。 >|| $thumb_html = get_the_post_thumbnail( $p->id ); ||< >|| $thumb_html = get_the_post_thumbnail( $p->id, 'post-thumbnail' ); ||< ※ringomaruさん自身が試された「$thumb_html = get_the_post_thumbnail( $p->id,array(80,80),'thumbnail' );」の場合、渡す引数が正しくありません。 http://wpdocs.sourceforge.jp/%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88%E3%82%BF%E3%82%B0/get_the_post_thumbnail >> <span style="font-size:medium; font-weight:bold;">使い方</span> >|| <?php echo get_the_post_thumbnail( $post_id, $size, $attr ); ?> ||< <span style="font-size:medium; font-weight:bold;">パラメータ</span> <span style="font-weight:bold;">$post_id</span> (整数) (オプション) 投稿 ID 初期値: 投稿 ID <span style="font-weight:bold;">$size</span> (文字列 または 配列) (オプション) (整数/配列) (任意) 画像サイズ。明示的に指定するときはキーワード(thumbnail, medium, large, full) または幅と高さをピクセルで指定する要素 2 つの配列、例えば array(32,32)。 初期値: 'post-thumbnail' <span style="font-weight:bold;">$attr</span> (文字列 または 配列) (オプション) 属性/値を配列で記述。詳しくは wp_get_attachment_image参照。 初期値: なし << それから、質問文の以下の箇所について書き忘れていましたが、「the_post_thumbnail()」に「echo」は不要ですので、「<?php the_post_thumbnail(); ?>」とする必要があります。 >> 別に新着記事を表示するところではサムネイルを出力するのに <?php echo the_post_thumbnail(); ?> を記載するとサムネイルのurlが http://example.com/wp-content/uploads/2014/11/xxx-80x80.jpg という風に表示されます。 << ※「the_post_thumbnail()」は、「get_the_post_thumbnail()」を呼び出して「echo」で出力します。

ringomaruさんのコメント
追加でご回答いただきありがとうございます。 自分で勝手に直してたまたま上手く表示できただけだったんですね。 私の$thumb_html = get_the_post_thumbnail( $p->id,array(80,80),'thumbnail' );だと、サイズに関することを2つもパラメーターに入れていた感じになっていたんですね。 $thumb_html = get_the_post_thumbnail( $p->id );に修正させていただきました。 the_post_thumbnailについては、つまり私の書き方だとecho echo get_the_post_thumbnail()となっていたという理解でいいでしょうか。 <?php the_post_thumbnail(); ?>と書くとecho get_the_post_thumbnail()の処理を自動でしているということですよね。 もっと勉強しなくては駄目ですね。色々と教えていただいて本当に助かります。
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ