私は画像を出力するためにWordPressでACF pluginを使用しています。私のfunctions.phpファイル内で、私は2つの画像のサイズがあります、私のテーマの中でビューポートのサイズに応じてPHP値を切り替えます
<?php
function responsive_image($image_id,$image_size,$max_width){
// check the image ID is not blank
if($image_id != '') {
// set the default src image size
$image_src = wp_get_attachment_image_url($image_id, $image_size);
// set the srcset with various image sizes
$image_srcset = wp_get_attachment_image_srcset($image_id, $image_size);
// generate the markup for the responsive image
echo 'src="'.esc_url($image_src).'" srcset="'.esc_attr($image_srcset).'" sizes="(max-width: '.$max_width.') 100vw, '.$max_width.'"';
}
}
?>
:
<?php
add_image_size('full', 1024, 400, true);
add_image_size('square', 540, 540, true);
のimg srcsetとACFで動作するように、私はのfunctions.php内の次のヘルパーのコードを持っています私は、持っている:
<img <?php responsive_image(get_field('image'), 'full', '1024px'); ?> alt="<?= esc_attr(get_field('alt')); ?>">
これは、フロントエンドで次のように出力します
<img src="test-1024x400.jpg" srcset="test-1024x400.jpg 1024w, test-300x117.jpg 300w, test-768x300.jpg 768w" sizes="(max-width: 1024px) 100vw, 1024px" alt="Image Alt">
この画像の画像のクロッピングは、1024px×400pxのワイド(フル)です。
モバイルでは、これを(正方形)540ピクセル×540ピクセルに切り替える必要があります。モバイルクラスを持つimgタグを追加し、display: none
とdisplay: block
を使用して2つの画像を切り替えることで、これを実現できます。この方法の唯一の欠点は、ロードする必要がある余分な画像です。
ビューポートに応じて条件付きWordPressイメージのサイズを読み込むことができるテーマPHP内の方法はありますか?
サーバー側で画面解像度を検出しようとすると、時間がかかることがあります。ブラウザの高さ/幅はどれくらいあるのかをサーバーに伝えるためにjsをどのように使用するのか、ここでは読んでいますが、これは決してありません:http://stackoverflow.com/questions/1504459/getting-the-screen-resolution- using-php –
ブラウザのサイズを変更すると、いつでもビューポートが変更できます。十分に応答性の高いサイトでは、CSSやJavaScriptを使用してこのクライアント側を処理する必要がありますが、サーバーは決して決して決断を下すことはできません。 – deceze
ありがとうございます。私はここで間違ったツリーを鳴らしていて、JSソリューションに集中する必要があるように見えます。 – Squideyes