web-dev-qa-db-ja.com

Wp_get_attachment_image_srcが間違った寸法を返すのはなぜですか?

srcsetタグのimg属性を構築するためにwp_get_attachment_image_srcを使用しています。その属性で、私は画像の幅と共に画像のURLのコンマ区切りのリストを出力したいです。

Media Settings ページを使用して、画像サイズを次のように設定しました。

  • サムネイルサイズ:150×150
  • Mサイズ:640×480
  • Lサイズ:1024×768
  • Sサイズ:278×320

wp_get_attachment_image_src関数は、画像サイズfullmediumおよびsmallに対して正しいURLと正しい幅を返します。 smalladd_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):

  • '0.83761000 1415195440'
  • '0.83831600 1415195440'

Getimagesizeを使うと:

  • '0.34808000 1415195635'
  • '0.35323900 1415195635'

Wp_get_attachment_image_srcに正しい寸法を返させるにはどうすればいいですか?

2
BdN3504

私は同じ問題を見つけた ここ そしてそこからの解決策はうまくいく。

解決策はこれを貼り付けるのと同じくらい簡単です。

$content_width = 2000;// Value higher than your new 'large' width

functions.phpに

そこからコピーされた説明(ユーザChi​​p Bennett):

あなたの問題は、グローバルな$ content_width変数に設定されている値(Boilerplateでは640px、Twenty Elevenでは584px)がSettings - > Mediaで指定した幅より小さいことだと私は信じます。

WordPressはユーザー設定をテーマ固有の値で上書きしています。テーマはその最大コンテンツ幅を知っているので、これは実際には理にかなっています、そしてテーマが収容するように設計されているものより大きな画像幅を使うことはテーマレイアウトを壊す可能性が非常に高いです。

彼の完全な答えを参照するために上記のリンクをチェックしてください。


これはアンダースコアテーマプロジェクトへのリンク で、そこでこの値を設定します。

4
Alvaro