ワードプレスで質問



以前 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だと適用になりません。

なぜでしょうか?

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

回答の条件
  • 1人30回まで
  • 13歳以上
  • 登録:2014/08/22 09:46:59
  • 終了:2014/08/22 11:29:25

ベストアンサー

id:a-kuma3 No.2

a-kuma3回答回数4440ベストアンサー獲得回数18242014/08/22 11:00:46

ポイント92pt

以前 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/

その他の回答(1件)

id:sasada No.1

sasada回答回数1482ベストアンサー獲得回数1332014/08/22 10:34:02

ポイント8pt

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

id:akakak

なるほど。関数the_contentはそのようの意味をなすんですね。

ありがとうございます。

2014/08/22 11:30:02
id:a-kuma3 No.2

a-kuma3回答回数4440ベストアンサー獲得回数18242014/08/22 11:00:46ここでベストアンサー

ポイント92pt

以前 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/

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません