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

ワードプレスで質問


以前 width 100 heighe 100の場合に指定サイズに画像を変換し出力をする処理のコードを書いていただきました。

function change_view_imagesize($content) {
if((preg_match('#<img ([^>]+?)( (width|height)="100"){2}([^>]+)>#', $content)) and wp_is_mobile()) {
$content = preg_replace('#<img ([^>]+?)(?: (width|height)="100"){2}([^>]+)>#', '<img $1 width="35" height="35"$3>', $content);
}
return $content;
}
add_filter( 'the_content', 'change_view_imagesize' );


個別記事 single.php の記事の中だと適用になりますが、
記事の中身以外やトップページのindex.phpだと適用になりません。

なぜでしょうか?

恐れ入りますがご教授いただけると幸いです。

●質問者: ak
●カテゴリ:コンピュータ ウェブ制作
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● sasada
●8ポイント

add_filterで指定している関数the_contentは投稿記事の内容を表示する関数なので、記事の中身以外やトップページのindex.phpからだと呼ばれないのではないでしょうか。


akさんのコメント
なるほど。関数the_contentはそのようの意味をなすんですね。 ありがとうございます。

2 ● a-kuma3
●92ポイント ベストアンサー

以前 width 100 heighe 100の場合に指定サイズに画像を変換し出力をする処理のコードを書いていただきました。

その質問の、id:rouge_2008 さんの回答 ( http://q.hatena.ne.jp/1390544695#a1222521 ) には、以下のように追記されています。

【追記】

表示時に変更する場合についてですが、「get_the_content()」や$postオブジェクトの「$post->post_content」など「the_content()」以外で記事本文を取得・表示している時は、自分で「the_content」フィルターを適用する必要があります。(※適用していない場合は、テンプレートの記事表示部分の変更が必要。)

the_content に追加されたフィルターをすべて適用するなら、追記にあるように apply_filters 。
ピンポイントに変換するなら、change_view_imagesize で変換してあげる。
ということだと思います。


WordPress の流儀から外れるのかもしれませんが、HTML を変換するのではなく、スタイルシートを使うべきだと思います。
<IMG> には、幾つかのクラスが指定されていますが、それらのスタイルは変えられなくて、属性として width="100" height="100" が指定されている画像だけ、35x35 にしたいということであれば、以下のようなスタイルになります。

IMG[width="100"][height="100"] {
 width: 35px;
 height: 35px;
}

jsFiddle で試してみたのが、こちらです。
100x100 だけ、小さくなっているのが分かると思います。
http://jsfiddle.net/a_kuma3/n7pxnLre/

関連質問

●質問をもっと探す●



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