srcset
タグのimg
属性を構築するためにwp_get_attachment_image_src
を使用しています。その属性で、私は画像の幅と共に画像のURLのコンマ区切りのリストを出力したいです。
Media Settings ページを使用して、画像サイズを次のように設定しました。
wp_get_attachment_image_src
関数は、画像サイズfull
、medium
およびsmall
に対して正しいURLと正しい幅を返します。 small
はadd_image_size
を使って追加したカスタムサイズです。
wp_get_attachment_image_src( $image_id, 'large' )
を呼び出すと、返される配列は次のようになります。
array (
0 => 'http://localhost/wp-content/uploads/2014/10/image-1024x768.jpg',
1 => 640,
2 => 480,
3 => true,
)
そのURLにある画像を確認すると、正しいサイズの画像が表示されます。
現在、私はこの問題を回避するためにphp組み込み関数 getimagesize を使用していますが、この関数呼び出しは単にwp_get_attachment_image_src
によって返されるインデックスにアクセスするよりもかなり時間がかかります。
Getimagesizeがない場合(実行前後のmtime):
Getimagesizeを使うと:
Wp_get_attachment_image_srcに正しい寸法を返させるにはどうすればいいですか?
私は同じ問題を見つけた ここ そしてそこからの解決策はうまくいく。
解決策はこれを貼り付けるのと同じくらい簡単です。
$content_width = 2000;// Value higher than your new 'large' width
functions.phpに
そこからコピーされた説明(ユーザChip Bennett):
あなたの問題は、グローバルな$ content_width変数に設定されている値(Boilerplateでは640px、Twenty Elevenでは584px)がSettings - > Mediaで指定した幅より小さいことだと私は信じます。
WordPressはユーザー設定をテーマ固有の値で上書きしています。テーマはその最大コンテンツ幅を知っているので、これは実際には理にかなっています、そしてテーマが収容するように設計されているものより大きな画像幅を使うことはテーマレイアウトを壊す可能性が非常に高いです。
彼の完全な答えを参照するために上記のリンクをチェックしてください。
これはアンダースコアテーマプロジェクトへのリンク で、そこでこの値を設定します。