最近私は自分のブログを特集画像/投稿サムネイルでアップグレードしたいと思いました。私はルーツテーマの上にカスタムテーマビルドを使っています(これはルーツテーマの問題ではないと思います)。私がアップロードする画像は1024 x 768であり、レターボックスフォーマット1024 x 512にトリミングされるものとします。
これは私がテーマファイルで使っているコードです:
<?php
if ( has_post_thumbnail() ) {
the_post_thumbnail(array(1024, 512), array('class' => 'img-responsive')); // add post thumbnail
}
?>
今、問題は、私の地元のXAMPPボックスではそれが完全にうまくいくということです。しかし、Webサーバー上では、画像は切り取られず、ローカルインストールの場合のように、主要コンテンツ領域の幅全体には広がりません。 Firebugでコードを確認すると、画像の幅は682ピクセル、高さは512ピクセル(XAMPPボックスでは1024 x 512ピクセル)です。つまり、画像は拡大縮小され、トリミングされていません。
テーマを再アップロードし、すべてのプラグインを無効にしました。そしてもちろん、私は関連トピックを検索し、他のコードサンプルを試し、Gdが有効になっていることを確認しました。これのどれも問題を解決しなかった。
任意のアイデアは大歓迎です。
Per the_post_thumbnail()
のCodexエントリは、配列を渡してもWordPress 3.0から動作しませんでした。
ご注意ください:WP 3.0+ではトリミングはできません。 WP 3.0以降に必要なのは、サムネイルを投稿するための呼び出しだけです。次に、ダッシュボードのメディアに進み、サムネールをトリミングするサイズを使用したいサイズに設定します。
正しい実装は、テーマ設定関数内の add_image_size()
を介して カスタムイメージサイズ をあなたの配列値で作成することです(あるいはafter_setup_theme
にフックされた他のコールバック):
add_image_size( 'custom-size', 1024, 512, true );
...そのサイズを直接呼び出します。
the_post_thumbnail( 'custom-size' );
これが問題を解決したものです(おそらく最も洗練された解決策ではありませんが、当分の間は働きます)。
custom.php(ルーツテーマのfunctions.php)にこれを追加しました:
if ( function_exists( 'add_theme_support' ) ) {
add_theme_support( 'post-thumbnails' );
set_post_thumbnail_size(1024, 512, true);
}
注目の画像が表示されるテーマファイルに、私はこれを追加しました:
if ( has_post_thumbnail() ) {
the_post_thumbnail(array(1024, 512, true), array('class' => 'img-responsive')); // add post thumbnail
}
?>
私が理解していないことは、どちらも他のものなしでは機能しないということです。とにかく、それは今のところ問題を解決します
通常、サムネイルをトリミングしたい場合は、3番目のパラメータとして "true"を使用して、言わなければなりません。
array(1024, 512, true)
Functions.phpでサムネイル画像のサイズを定義した場合は、少なくともそうすることになります。それで、私はそれがthe_post_thumbnail配列でもうまくいくはずだと思います。
これが参照です: http://codex.wordpress.org/Function_Reference/set_post_thumbnail_size