teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

サンプルソース追記

2015/05/11 13:20

投稿

Yoh
Yoh

スコア94

answer CHANGED
@@ -1,3 +1,80 @@
1
+ 判別を「ウィンドウサイズ」とするか、「デバイス」とするかで方法が変わってきます。
2
+
3
+
4
+ ウィンドウサイズでの判定の場合は、JSを使うしかないと思います。
5
+ JSはあまり得意ではないので冗長的な書き方になってしまっているかもしれませんが、
6
+
1
- ```lang-<ここに言語を入力>
7
+ ```lang-Javascript
8
+
9
+ var imgControl_small = function() {
10
+ $('.thumbnail img').each(function() {
11
+ $(this).attr('src',$(this).attr('src').replace('300x225.', '300x150.'));
2
- コード
12
+ });
13
+ }
14
+
15
+ var imgControl_large = function() {
16
+ $('.thumbnail img').each(function() {
17
+ $(this).attr('src',$(this).attr('src').replace('300x150.', '300x225.'));
18
+ });
19
+ }
20
+
21
+ $(window).on('resize', function() {
22
+ var winW = $(window).width();
23
+ if(winW < 768) {
24
+ imgControl_small();
25
+ } else {
26
+ imgControl_large();
27
+ }
28
+ });
29
+ ```
30
+ 多分こんな感じで行けると思います。
31
+ ただし、アップロードする画像のサイズや拡張子を必ず同じにしなければなりません。
32
+ (比率が変わると画像ファイル名が変わるので・・)
33
+
34
+ デバイスのみで判別する場合
35
+ スマホ、タブレットを判別すればよいのでPHPの条件判別だけでできると思います。
36
+ (PCではウィンドウをリサイズしても画像は変わりません)
37
+ functions.php
38
+ ```lang-PHP
39
+ add_image_size('custom-size', 300, 225, true);
40
+ add_image_size('custom-size2', 300, 150, true);
41
+
42
+ # ブラウザ情報取得
43
+ $agent = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : "";
44
+
45
+ function is_iphone() {
46
+ global $agent;
47
+ return( preg_match('/iPhone/',$agent) || preg_match('/iPod/',$agent));
48
+ }
49
+
50
+ function is_android() {
51
+ global $agent;
52
+ return( preg_match('/Android/',$agent) && preg_match('/Mobile/',$agent));
53
+ }
54
+
55
+ function is_tablet() {
56
+ global $agent;
57
+ return( preg_match('/iPad/',$agent) || (preg_match('/Android/',$agent) && !preg_match('/Mobile/',$agent)));
58
+ }
59
+
60
+ function is_smartphone() {
61
+ return(
62
+ is_iphone() ||
63
+ is_android() ||
64
+ is_tablet()
65
+ );
66
+ }
67
+ ?>
68
+
69
+ ```
70
+
71
+ index.phpなど
72
+ ```lang-PHP
73
+ <?php
74
+ if(is_smartphone()) {
75
+ the_post_thumbnail('custom-size');
76
+ } else {
77
+ the_post_thumbnail('custom-size2');
78
+ }
79
+ ?>
3
80
  ```