web-dev-qa-db-ja.com

画像を挿入するときに[メディア]> [設定]の設定が無視される

画像をアップロードすると、思ったとおりに自動的にサイズが変更されますが、画像を挿入するためのサイズは、Settings/Mediaに設定した設定を無視するようです。

私のメディア設定には、次のものがあります。

  • サムネイル:150×150
  • 中:300×300
  • 大:690 x 9999

2226 x 1663 の画像をアップロードします。
Wordpressは正しい画像サイズを生成しますが、挿入のために以下のオプションを私に与えます:

  • サムネイル:150×150(期待どおり)
  • 中:300 x 224(予想通り)
  • 大:640 x 447(間違っています。なぜですか?)

私はフォーラムを見て、functions.phpファイルに以下を追加するという提案を見つけました。

update_option('large_size_w', 690);

しかし、これはうまくいきませんでした。

4
Gary

あなたの問題は、グローバル$content_width変数(Boilerplateでは640pxおよび584px(Twenty Eleven)は、Settings -> Mediaで指定した幅よりも小さいです。

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

解決策は、大きな画像の幅を690pxに変更する必要がある場合(そして、子テーマがこの幅に対応できると仮定した場合)、define子テーマ$content_widthファイルのfunctions.php。次のように、after_setup_theme()にフックされたChild Themeセットアップ関数を使用することをお勧めします。

<?php
function wpse48075_theme_setup() {
    // Define $content_width global
    global $content_width;
    if ( ! isset( $content_width ) ) {
        $content_width = 690;
    }
}
add_action( 'after_setup_theme', 'wpse48075_theme_setup', 9 );
?>

子テーマのアクションは親テーマのアクションの前に追加されるため、優先度9はおそらく過剰です。優先度9を使用すると、親テーマ設定が優先度10で起動する前にこのアクションが起動することが保証されます。

子テーマアクションが最初に起動するため、子テーマは$content_widthを定義し、親テーマはそれをオーバーライドしません(if ( ! isset() )条件付きラッパーも使用するため)。

編集

だから、Twenty Elevenのfunctions.phpファイルを見て、間違った仮定をしたことに気付きました。TwentyElevenは、$content_widthにフックされたテーマ設定関数の内部ではなく、functions.phpafter_setup_themeを裸で定義しています。したがって、それをオーバーライドするには、**同様に行う必要があります**。

functions.phpファイルの先頭で、他の関数定義の前に次を配置するだけです。

$content_width = 690;

これは、子テーマfunctions.phpが親テーマfunctions.phpの前に解析されるため、機能するはずです。

(これは、テーマがコールバック内にすべてをラップする理由の代表的な例です。:))

6
Chip Bennett

画像をアップロードしたときにどの画像サイズが生成されるかをもっと制御したい場合は、 Simple Image Sizesプラグインを見てください

0
Scriptamateur

メディアページの設定を変更して、埋め込みの最大幅が空白ではなく690になるようにします。

enter image description here

0
Tom J Nowell