web-dev-qa-db-ja.com

the_post_thumbnailスケーリングは難しいトリミングではありません

最近私は自分のブログを特集画像/投稿サムネイルでアップグレードしたいと思いました。私はルーツテーマの上にカスタムテーマビルドを使っています(これはルーツテーマの問題ではないと思います)。私がアップロードする画像は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が有効になっていることを確認しました。これのどれも問題を解決しなかった。

任意のアイデアは大歓迎です。

2
gfaw

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' );
3
Chip Bennett

これが問題を解決したものです(おそらく最も洗練された解決策ではありませんが、当分の間は働きます)。

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
    }
?>

私が理解していないことは、どちらも他のものなしでは機能しないということです。とにかく、それは今のところ問題を解決します

0
gfaw

通常、サムネイルをトリミングしたい場合は、3番目のパラメータとして "true"を使用して、言わなければなりません。

array(1024, 512, true)

Functions.phpでサムネイル画像のサイズを定義した場合は、少なくともそうすることになります。それで、私はそれがthe_post_thumbnail配列でもうまくいくはずだと思います。

これが参照です: http://codex.wordpress.org/Function_Reference/set_post_thumbnail_size

0
Fyn