web-dev-qa-db-ja.com

どのようにワードプレスのテーマのための条件付きcontent_widthを作成するのですか?

私は私のテーマのfunctions.phpの内容の幅のための条件付きステートメントを作成しようとしています。だからいくつかのカテゴリは580のcontent_widthを持ち、いくつかは900を持ちます。

通常、これはfunctions.phpにあります。

if ( ! isset( $content_width ) ) 
    $content_width = 900;

私はこのようなものが欲しい:

if(in_category(array('news','blog'))) {
   $content_width = 580;
} 
elseif(is_page()) {
   $content_width = 580;
}
else {
   $content_width = 900;
}

私のfunctions.phpでこれを持っているとき、内容の幅は私が最後の行に書くものになる。

私は何かが足りないのですか?これでも可能ですか?

ありがとうございます。

7
SteveLambert

いいえ、不可能です。 $ content_widthはテーマ全体の定数であり、クエリ条件が設定される前のfunctions.phpで設定されます。

$ content_widthは、image_send_to_editorの中間画像サイズを決定するために使用されます。 「大きい」画像サイズは、$ content_widthの値に設定されます。

カテゴリごとにこれらのサイズを変更する必要がある場合は、そのフィルターにフックすることができます...質問の私の答えを参照してください 投稿タイプ管理ページに応じてset_post_thumbnail_sizeを変更 方法の一般的な例これは行うことができます(ユーザーが最初に画像をアップロードするときに投稿カテゴリはほとんど常に設定されていないため、カテゴリ別に実行しようとするとほとんど失敗します-投稿タイプで設定する方が少し信頼性が高いことに注意してください)

投稿とページの幅に関係なく、$ content_widthを、ユーザーが投稿に含めたい最も広い画像に設定します。

9
goldenapples

多分これは動作します:

if(in_category(array('news','blog'))) {
   $GLOBALS['content_width'] = 580;
} 
elseif(is_page()) {
   $GLOBALS['content_width'] = 580;
}
else {
   $GLOBALS['content_width'] = 900;
}
0
Anonym