Двадцать двенадцать виттов, принимающих пространство

Я использую двадцать двенадцать тем, и в этой теме я использовал Main Sidebar для виджетов. Я использовал код ниже, чтобы виджеты исчезли на моей homepage ( front page ) . Однако код работает, область виджетов все еще занимает пространство. Как я могу растянуть свой контент, чтобы заполнить всю ширину?

 <?php If ( !is_front_page ) { get_sidebar() } ?> 

Перед применением кода виджет все еще отображается на рисунке ниже:

Изображение перед кодом

После применения кода над ним он удаляет виджет, но виджет все еще занимает место.

После применения кода

Solutions Collecting From Web of "Двадцать двенадцать виттов, принимающих пространство"

В вашем вопросе есть какая-то запутанная информация, а какая-то важная информация отсутствует

  • Вы установили статическую переднюю страницу, как это предлагается в вашем коде

  • Вам нужно достичь этого на своей главной странице или на главной странице

  • Почему вы не используете шаблон front-page.php, включенный, если вы установили статическую переднюю страницу, на самом деле именно то, что вам нужно. Основная боковая панель удаляется из этого шаблона и работает точно так же, как и шаблон страницы полной ширины, за исключением двух боковых панелей на первой странице, но они не должны мешать тому, что вам нужно достичь. EDIT Чтобы создать статическую переднюю страницу, прочитайте эту статью для получения дополнительной информации: Создание статической передней страницы

Если вам это нужно на вашей домашней странице или вам нужно изменить страницу page.php, это будет довольно неприятная неприятная работа. Я могу помочь вам с некоторыми советами и небольшим кодом, но не с полным кодом, это довольно интенсивная модификация кода

Посмотрите на functions.php, строки 407-445 . Двадцать двенадцать использует пользовательские классы тела, чтобы добавить full-width класс тела к шаблону full-width.php и, самое главное, когда нет активной боковой панели

 if ( ! is_active_sidebar( 'sidebar-1' ) || is_page_template( 'page-templates/full-width.php' ) ) $classes[] = 'full-width'; 

Давайте рассмотрим пример index.php. Если вы добавите виджет на главную боковую панель ( sidebar-1 ), она появится на всех страницах сайта. Поскольку боковая панель имеет прикрепленный к ней виджет, статус боковой панели будет активным.

Происходит следующее:

  • ! is_active_sidebar( 'sidebar-1' ) ! is_active_sidebar( 'sidebar-1' ) возвращает false ,

  • is_page_template( 'page-templates/full-width.php' ) возвращает false

  • Из-за того, что оба оператора возвращают false, условие не выполняется, поэтому класс full-width не применяется

Что это значит

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

ПОЗВОЛЯЙТЕ – FLAW

Функция twentytwelve_body_class не подключается, поэтому ее нельзя просто перезаписать дочерней темой. Также нет фильтра, поэтому вы можете фильтровать и изменять поведение классов тела.

РЕШЕНИЕ ПРОБЛЕМЫ

Обратите внимание: все эти изменения ДОЛЖНЫ выполняться в дочерней теме, никогда не внося изменений в оригинальную тему. Я привел домашнюю страницу (index.php) в качестве примера, изменив при необходимости

МЕТОД 1

Наверное, это не лучшее решение. Удалите вызов боковой панели из index.php (если вы еще не сделали этого, просто скопируйте index.php в свою дочернюю тему и удалите вызов боковой панели). Теперь отмените первоначальный класс full-width и зарегистрируйте новый класс и назовите его, возможно, new-full-width . Что-то вроде этого будет делать ( обратите внимание: вам нужно перейти к вашему child teme functions.php )

 function wpse_alter_body_classes($classes) { foreach($classes as $key => $value) { if ($value == 'full-width') { unset($classes[$key]); } } if ( ! is_active_sidebar( 'sidebar-1' ) || is_home() || is_page_template( 'page-templates/full-width.php' ) ) { $classes[] = 'new-full-width'; } return $classes; } add_filter('body_class', 'wpse_alter_body_classes', 20, 2); не function wpse_alter_body_classes($classes) { foreach($classes as $key => $value) { if ($value == 'full-width') { unset($classes[$key]); } } if ( ! is_active_sidebar( 'sidebar-1' ) || is_home() || is_page_template( 'page-templates/full-width.php' ) ) { $classes[] = 'new-full-width'; } return $classes; } add_filter('body_class', 'wpse_alter_body_classes', 20, 2); 

Теперь вам нужно искать все экземпляры full-width в двадцать двенадцать style.css, скопировать их в свою дочернюю тему и изменить их все на new-full-width

СПОСОБ 2

Лучший вариант, чем метод 1. Просто зарегистрируйте новый специальный класс тела (например, домашний класс) только для домашней страницы. ( Примечание: это необходимо для вашего ребенка teme functions.php )

 function wpse_alter_body_classes($classes) { if ( is_home() ) { $classes[] = 'home-class'; } return $classes; } add_filter('body_class', 'wpse_alter_body_classes', 20, 2); 

Еще раз скопируйте все экземпляры full-width из style.css из двадцати двенадцати в вашу дочернюю тему. Переименуйте все экземпляры full-width в home-class

МЕТОД 3

Если вы действительно предприимчивы, возьмите двадцать двенадцать тем, переименуйте их и создайте свою собственную самостоятельную тему с собственными настройками

МЕТОД 4

Это намного проще. Переосмыслите и переставьте полную настройку, чтобы согласовать с ограничениями темы.

ЗАКРЫТЬ ОТВЕТ

Важно сохранять изображения и их добавление и отображение. Вам также может потребоваться посмотреть класс has-post-thumbnail который определяется при использовании шаблона front-page.php. Помните, что всегда загружайте изображение в полном размере, не используйте другие три стандартных размера

Вы можете написать плагин, который удалит виджет и освободит место. Напишите это в новом плагине.

 <?php function remove_some_widgets(){ unregister_sidebar( 'sidebar-1' ); unregister_sidebar( 'sidebar-2' ); unregister_sidebar( 'sidebar-3' ); } add_action( 'widgets_init', 'remove_some_widgets', 11 ); ?> 

где «sidebar-1» обозначает основную боковую панель.