как создать условную ширину содержимого для темы WordPress?

wordpress.stackexchange https://wordpress.stackexchange.com/questions/6499

Вопрос

Я пытаюсь создать условный оператор для ширины контента в файле function.php моей темы.Таким образом, в некоторых категориях значение content_width будет равно 580, в некоторых — 900.Это обеспечит правильную работу oEmbed, где бы он ни использовался.

Обычно в вашем файле function.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;
}

Когда это есть в моем файле function.php, ширина содержимого становится такой, какой я пишу в последней строке.

Я что-то пропустил?Возможно ли это вообще?

Спасибо!

Это было полезно?

Решение

Нет, это невозможно. $content_width является константой всей темы и устанавливается в файле function.php до того, как будут установлены какие-либо условия запроса.

$content_width используется для определения промежуточных размеров изображения в image_send_to_editor.«Большому» размеру изображения будет присвоено значение $content_width.

Если вам нужно изменить эти размеры для каждой категории, вы можете подключиться к этому фильтру...смотри мой ответ на вопрос измените set_post_thumbnail_size в соответствии с типом сообщения на странице администратора общий пример того, как это можно сделать (обратите внимание, что это почти всегда не удастся, если вы попытаетесь сделать это по категории, поскольку категория сообщения почти всегда не устанавливается, когда пользователь впервые загружает изображение - установка его по сообщению типа чуть надежнее)

Независимо от ширины ваших сообщений и страниц, установите $content_width до самого широкого изображения, которое вы хотите, чтобы пользователь включил в сообщение.

Другие советы

Может это работает:

if(in_category(array('news','blog'))) {
   $GLOBALS['content_width'] = 580;
} 
elseif(is_page()) {
   $GLOBALS['content_width'] = 580;
}
else {
   $GLOBALS['content_width'] = 900;
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с wordpress.stackexchange
scroll top